2017-01-13 3 views
2

Я использую угловую 2.3.1 и у меня есть следующий HTML-элемент шаблона компонента:Angular2 применяет нг-класс действует на поле, когда требуется атрибут является условным и значение по-прежнему пуст

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

Если это это новый пользователь (id пуст), тогда я хочу, чтобы он запрашивал пароль. Если не новый пользователь, пароль не является обязательным.

Условный атрибут работает, но при условном использовании применяется класс ng-valid, хотя поле по-прежнему не имеет значения.

Если я жестко закодирую требуемый атрибут, то угловое2 соответствующим образом устанавливает класс в ng-invalid, но когда я делаю его условным и requirePass является истинным, этот элемент всегда имеет класс ng-valid, даже если он по-прежнему недействителен.

+0

Вы пытались использовать [обязательный] вместо [attr.required]? – MikeOne

ответ

3

Проверьте Угловой 2 source. Вы увидите, что это действительно директива, поэтому вам нужно будет использовать этот синтаксис для настройки вашего привязки.

Он также принимает значение, оно не просто должно присутствовать, поэтому вместо передачи в null вы можете просто передать true/false.

[required]="requirePasswd" 
+0

Другими словами, передать 'boolean' ничего другого, например:' [(ngModel)] = "guest.emailAddress" # emailAddress = "ngModel" [email] = "!! emailAddress.value" '(проверять электронную почту, когда это не так пусто), спасибо Steveadoo. – Aldracor