我有一个基于以下内容的输入框:
如果更改收音机,我会看到该值因false而变为true:
<pre> {{model_parameters_general.estimationmethod=='ew'}} </pre>
哇,为什么输入框会因为false而被禁用?
<input [disabled]="model_parameters_general.estimationmethod=='ew'" [(ngModel)]="model_parameters_general.lambda"
formControlName="lambda" type="text" class="form-control">
编辑:
在日志中我得到了这个:
It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true
when you set up this control in your component class, the disabled attribute will actually be set in the DOM for
you. We recommend using this approach to avoid 'changed after checked' errors.
Example:
form = new FormGroup({
first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),
last: new FormControl('Drew', Validators.required)
});
所以我在rc6中使用了反应。
我将初始禁用设置为以下内容:
this.myForm = fb.group({
lambda: new FormControl({value: .99, disabled: true}, Validators.required),
})
那么基于无线电输入的切换启用吗?
答案 0 :(得分:6)
对于布尔属性,您需要将它们设置为null
以删除它们
<input [disabled]="model_parameters_general.estimationmethod=='ew' ? true : null" [(ngModel)]="model_parameters_general.lambda"
formControlName="lambda" type="text" class="form-control">
答案 1 :(得分:4)
在rc.6中,他们在使用被动表单时已经删除了在模板绑定上动态禁用输入的功能。您必须监控更改并立即致电.disable()
您要禁用的formControl
。我更喜欢旧的做事方式,并希望他们把它带回来或同样有用的解决方案。
答案 2 :(得分:4)
答案 3 :(得分:3)
请尝试以下代码。
setControl(name: any, Isenable: boolean): void {
let ctrl = this.checkInForm.controls[name];
console.log(ctrl);
Isenable ? ctrl.enable() : ctrl.disable();
}
致电声明
this.setControl('ctrl name', true); // enbale it
this.setControl('ctrl name', false); // disable it
由于 快乐的编码!