angular2不会根据true或false条件禁用输入

时间:2016-09-05 06:59:04

标签: angular

我有一个基于以下内容的输入框:

如果更改收音机,我会看到该值因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),

        }) 

那么基于无线电输入的切换启用吗?

4 个答案:

答案 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。我更喜欢旧的做事方式,并希望他们把它带回来或同样有用的解决方案。

点击此related github issue

答案 2 :(得分:4)

尝试使用attr.disabled而不是禁用

<input [attr.disabled]="disabled?'':null"/>

StackOverflow Answer

答案 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

由于 快乐的编码!