2017-04-20 94 views
3

我的表單中有一個嵌套的控制組,我想訪問它們的表單狀態值(如pristine和valid)來動態顯示驗證錯誤。角度形式 - 訪問模板中的嵌套控件

的動態構建這樣

controlMap['password'] = this.password; 
controlMap['customData'] = this.formBuilder.group(customDataControlMap); 
this.form = new FormGroup(controlMap) 

的從obj是像

{ 
    controls:{ 
    password:{} 
    --->nested 
    customData:{ 
     controls:{ 
      customerId:{} 
     } 
    } 
    } 
} 

的ngClass它看起來相當醜陋的模板

[ngClass]="(!form.controls.customData.controls.customerId.valid && !form.controls.customData.controls.customerId.touched && submitted) ? 'invalid' : ''" 

,將無法正常工作在我嘗試構建它時(ng build --prod)

ERROR在 NG:///Users/hanche/Desktop/Development/selfbits/beratergruppe-leistungen-webclient/src/app/pages/clients/client-new/client-new.component.html ( 6,61):類型'AbstractControl'上不存在屬性y'控件'。

回答

3

試試這個

form.get('customData').get('customerId')?.invalid 

form.get('customData.customerId') 

有沒有辦法避免函數模板調用?使用getter

class YourComponent { 
    get dataCustomerId() { 
    return this.form.get('customData.customerId'); 
    } 
} 

模板:

[ngClass]="dataCustomerId?.invalid" 

angular forms - accessing nested controls in template

+1

怎麼樣'form.get( 'customData.customerId')'? :) – developer033

+0

@ developer033 yeap,它也工作。 –

+0

謝謝你的工作,但有沒有辦法避免模板中的函數調用? –