我在 .ts 檔案中有以下代碼:
set query(query: string) {
this.form.get('query').setValue(query);
}
get query() {
return this.form.controls.query;
}
我正在嘗試將 .html 檔案中的 getter 方法稱為:
<div *ngIf="!query.valid && (query?.dirty || query?.touched)">
<div [hidden]="!query.errors.required">Query is required</div>
</div>
但是,會引發錯誤。如果我從 .ts 檔案中洗掉設定器,則代碼可以完美運行。
為什么會這樣?
uj5u.com熱心網友回復:
你可以通過兩種方式做到這一點,
方式一:
set query(query: any) {
this.form.get('query').setValue(query);
}
get query() {
return this.form.controls.query;
}
方式二:
set query(query: string) {
this.form.get('query').setValue(query);
}
get query(): any {
return this.form.controls.query;
}
當您為您分配一個值時,query 您將其分配為一個字串,請參閱您的 setter 中的傳入引數型別。因此默認情況下,角度將其理解為字串型別。然后在您的 HTML 中,您嘗試將它作為一個物件訪問,這會為 angular 帶來問題,因為它希望它是一個字串但用作一個物件。
uj5u.com熱心網友回復:
嘗試 form.getControls['query'].setValue(myValue)
form.get('fieldName') 將獲取該欄位的值... form.controls['fieldName'] 將獲取欄位本身.. 欄位控制元件將公開獲取或設定值方法
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408380.html
標籤:
上一篇:我不明白指標的行為
