我在用户未处于编辑模式时禁用控件。
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;错误。
设置控件时有没有办法绑定这个值? 我是否需要循环控制并在每次更改时切换它?
答案 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 });
}