第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

隱藏表單上的 @ViewChild 返回未定義 - 如何訪問它以便我可以設置焦點

隱藏表單上的 @ViewChild 返回未定義 - 如何訪問它以便我可以設置焦點

肥皂起泡泡 2023-08-10 15:25:14
我有一個只有單擊按鈕時才可見的表單。我希望用戶單擊按鈕并將焦點放在表單顯示后的第一個輸入字段上。使用 @Viewchild 我無法執(zhí)行此操作,因為組件首次加載時表單不可用。我收到錯誤Cannot read property 'nativeElement' of undefinedTSformLoaded = false;@ViewChild("firstName") nameField: ElementRef;editName(): void {?this.formLoaded = true;?this.nameField.nativeElement.focus();}超文本標記語言<button mat-raised-button color="primary" (click)="editName()">Edit</button>?<div *ngIf="formLoaded" class="group">? <mat-form-field>? ?<input #firstName matInput>? </mat-form-field></div>如何訪問輸入 #firstName 以便為其提供焦點?
查看完整描述

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;

}


查看完整回答
反對 回復 2023-08-10
?
慕碼人2483693

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();

?}

};

查看完整回答
反對 回復 2023-08-10
  • 2 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號