编程语言
首页 > 编程语言> > javascript-空变量为输入的禁用属性提供真实值

javascript-空变量为输入的禁用属性提供真实值

作者:互联网

我不知道这是问题还是正常行为.

如果我们有这样的形式:

<form #form="ngForm" >
  <div>
     <label>field1</label>
     <input type="text" name="field1" [(ngModel)]="mainVar" [disabled]="someVar"  />                                                                                                                    
  </div>
  <div>
     <label>field2</label>
     <input type="text" name="field2" [(ngModel)]="someVar" />
  </div>
</form>

同时,变量mainVar和someVar在组件中设置为空字符串:

mainVar = '';
someVar = '';

即使someVar为空字符串,这也会导致名称字段1的输入被禁用.据我所知,为空字符串的变量应在if语句中返回false.

但是最奇怪的是,如果我从输入字段1中删除[[ngModel)]属性,它将按预期工作(如果我在输入字段2中输入内容,则输入字段1将被禁用)

Plunker example

解决方法:

更新

我在有角度的源代码(< 3开放源代码!)中找到了答案.更改禁用的输入后,ngModel控制器会明确检查''.如果输入严格等于“”,则该元素将被禁用.因此,此行为是设计使然. 这是源代码的外观(link to GitHub,请参见第142和217行)

const isDisabled = disabledValue === '' || (disabledValue && disabledValue !== 'false');

这意味着您不能将空字符串用作虚假来设置使用ngModel禁用它的输入.

这是你如何解决它

<input type="text" name="field1" [(ngModel)]="mainVar" [disabled]="someVar ? true : false"  />

Working plunker example

标签:angular2-ngmodel,angular,angular2-directives,angular2-forms,javascript
来源: https://codeday.me/bug/20191111/2020432.html