2 回答

TA貢獻1796條經(jīng)驗 獲得超10個贊
利用AfterViewChecked生命周期掛鉤,每次觸發(fā)更改檢測時都會運行它。因此,只有在表單出現(xiàn)在模板上之后,您才能為其設置焦點。
ngAfterViewChecked() {
? ?if (this.formLoaded) {
? ? ? this.nameField.nativeElement.focus();
? ?}
}
從editName方法中刪除 focus 語句:
@ViewChild("firstName") nameField: ElementRef;
editName(): void {
? ?this.formLoaded = true;
}

TA貢獻1860條經(jīng)驗 獲得超9個贊
像這樣包裝焦點方法 isnide settimeout :
?editName(): void {
? ? ? ? this.formLoaded = true;
? ? ? ? setTimeout(()=>{
? ? ? ? ? this.nameField.nativeElement.focus();
? ? ? ? })
? ? ?}
另一種方法是使用 setter
@ViewChild("firstName",{read:MatInput}) set viewC(nameField: MatInput){
?if(nameField){
? ? nameField.focus();
?}
};
添加回答
舉報