Angular2 Forms禁用具有数据绑定值的组件中的控件

时间:2016-09-23 15:12:49

标签: 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处理它。

这是警告:

  

您似乎正在使用带有被动形式的disabled属性   指示。如果在设置此控件时将disabled设置为true   您的组件类,实际上将设置disabled属性   你的DOM。我们建议使用此方法来避免更改   检查后#39;错误。

设置控件时有没有办法绑定这个值? 我是否需要循环控制并在每次更改时切换它?

1 个答案:

答案 0 :(得分: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 });
}