Дана простая регистрационная форма:
this.registerForm = this.formBuilder.group({
email:['', Validators.compose([
Validators.required,
Validators.pattern('.+@.+\..+'),
]), this.validators.isTaken],
matchingPassword: this.formBuilder.group({
password: ['', Validators.compose([
Validators.required,
Validators.maxLength(30),
Validators.minLength(8)
])],
passwordConfirmation: ['', Validators.compose([
Validators.required,
])]
}, {validator: this.validators.match})
})
Я пытаюсь проверить совпадение подтверждения пароля, поэтому применяю валидатор соответствия для формирования группы. Но теперь я столкнулся с ситуацией, когда само поле отображается как действительное (с зеленой рамкой, потому что все его валидаторы проходят), а групповой валидатор - нет, и мне нужно, чтобы они отображались как красные.
Так что я должен изменить ng-valid на ng-invalid вручную или есть какой-то трюк, чтобы исправить это лучше?
passwordConfirmation
, потому что содержимое этого поля действительно только тогда, когда оно соответствует паролю. Для более общего группового валидатора у меня было бы просто общее сообщение об ошибке для всей группы. - person Harry Ninh   schedule 14.08.2016passwordConfirmation
, он будет срабатывать только при изменении этого поля. Я имею в виду, что если вы измените полеpassword
так, чтобы оно соответствовалоpasswordConfirmation
, последнее все равно будет помечено как недействительное, потому что для этого поля не выполнялась проверка. - person SET   schedule 14.08.2016valueChanges
password
для вызова функцииpasswordConfirmationControl.updateValueandValidity()
. - person Harry Ninh   schedule 14.08.2016