Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 空变量为输入时禁用的属性提供真值_Javascript_Angular_Angular2 Forms_Angular2 Directives_Angular2 Ngmodel - Fatal编程技术网

Javascript 空变量为输入时禁用的属性提供真值

Javascript 空变量为输入时禁用的属性提供真值,javascript,angular,angular2-forms,angular2-directives,angular2-ngmodel,Javascript,Angular,Angular2 Forms,Angular2 Directives,Angular2 Ngmodel,我不知道这是问题还是正常行为 如果我们有这样的表格: <form #form="ngForm" > <div> <label>field1</label> <input type="text" name="field1" [(ngModel)]="mainVar" [disabled]="someVar" />

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

如果我们有这样的表格:

<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>
这将导致名为field1的输入被禁用,即使someVar是空字符串。据我所知,为空字符串的变量应该向if语句返回false

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


将其设置为null/undefined/false,它将不会被禁用。 字符串为空仍然是一个值。

UPDATE
我在angular源代码中找到了这个问题的答案(布尔属性不考虑它们的值。如果属性存在,它的意思是
true
。请检查并在javascript中使用。空字符串被认为是falsy。嗯,这很奇怪。但是,如果我删除[(ngModel)],为什么它的行为与您所说的相反@suraj,这就是我在示例中所说的,空字符串应该返回false
[disabled]=“''''
将返回
true
,真正的谜团是为什么在删除模型时它会起作用。我知道,如果我做双反运算!!someVar我会得到布尔值,但是如果[(ngModel)]is removedempty string value为false问题是关于角度的,而不是Mozilla规范。感谢您的回答,但这仍然是角度的problem@maxal90,如果您真的认为这是一个bug,您应该在官方的github repo上提交一个问题。我也考虑过这个问题,如果存在空字符串,它应该根据HTML。但是如果您将0设置为someVar的值,field1将不会被禁用。0与if语句中的空字符串false相同。我刚才在那里提出了一个问题。希望它能得到答案。谢谢anyway@maxal90,请参阅更新,我在源代码中找到了答案
mainVar = '';
someVar = '';
const isDisabled = disabledValue === '' || (disabledValue && disabledValue !== 'false');
<input type="text" name="field1" [(ngModel)]="mainVar" [disabled]="someVar ? true : false"  />