微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐