当必需的属性是有条件的并且值仍然为空时,Angular2 将 ng-valid class 应用于字段

Angular2 applies ng-valid class to field when required attribute is conditional and value is still empty

我使用的是 angular 2.3.1,我在组件模板中有以下 html 元素:

<input class="form-control" type="text" id="password" name="password" 
placeholder="Password" [attr.required]="requirePasswd ? true : null"
[(ngModel)]="password">

如果这是新用户(id 为空),那么我需要密码。如果不是新用户,密码是可选的。

条件属性有效,但在有条件地使用时,即使该字段仍然没有值,也会应用 ng-valid class。

如果我对必需的属性进行硬编码,angular2 会适当地将 class 设置为 ng-invalid,但是当我将其设为条件且 requirePass 为真时,此元素始终具有 ng-有效 class 即使它仍然无效。

查看 Angular 2 source。您会看到 required 实际上是一个指令,因此您需要使用该语法在此处设置绑定。

它也有一个值,它不仅必须存在,所以除了传递 null 你可以只传递 true/false.

[required]="requirePasswd"