2016-09-23 13 views
3

當用戶未處於編輯模式時,我正在禁用控件。Angular2 Forms使用數據綁定值禁用組件中的控件

this.theForm = this.builder.group({ 
    name: [{ value: this.model.name, disabled: !this.isEditMode}, Validators.required], 
}) 

當它們更改爲編輯模式時,我希望控件被啓用。但是,似乎一旦設置了它,它就不會改變,那麼組件值就會改變。

這是工作,當我有這樣的標記:

<input [disabled]="!isEditMode" type="text" formControlName="name" /> 

這是導致運行預警提示我與formControl處理。

這是警告:

它看起來像你使用一個反應形式 指令禁用屬性。如果在 組件類中設置此控件時將殘疾人設置爲true,則將禁用的屬性實際設置爲 DOM。我們建議使用這種方法來避免'在檢查後更改 '錯誤。

當我設置控件時,有沒有辦法綁定這個值? 我是否需要循環控制並在切換時切換它?

回答

2

您可以訂閱控制的變化和更新它在那裏,像這樣(把我的頭頂部):

ngOnInit() { 
    for (let nut of this.userSettings.nutrientData) { 
     this.foodSettingsForm.controls[nut.abbr].valueChanges 
      .subscribe(v => { 
       this.completeValueChange(nut.abbr, v, (mode=="edit" ? false : true)); 
     }); 
    } 
} 

completeValueChange(field: string, value: boolean, disable: boolean) { 
    this.myForm.controls[myField] 
     .setValue(({value: vale, disabled: disable}, { onlySelf: true }); 
} 
相關問題