Я не могу вывести *ngIf
, если пароли не совпадают.
<md-form-field>
<input mdInput placeholder="Repeat password" type="password" formControlName="repeat">
<md-error *ngIf="form.controls['repeat'].errors?.required">Field required</md-error>
<md-error *ngIf="form.errors?.matchingPasswords">passwords don't match</md-error>
</md-form-field>
Вот мой конструктор
constructor(private formBuilder: FormBuilder) {
this.form = this.formBuilder.group({
username:
['',
Validators.compose([
Validators.required,
Validators.minLength(3),
Validators.maxLength(30),
this.validateUsername,
this.validateUsernameAvailability
])
],
email:
['',
Validators.compose([
Validators.required,
Validators.maxLength(30),
this.validateEmail
])
],
password:
['',
Validators.compose([
Validators.required,
Validators.minLength(8),
Validators.maxLength(30),
this.validatePassword
])
],
repeat: ['',
Validators.compose([
Validators.required
])
]
}, {validator: this.matchingPasswords('password', 'repeat')});
}
matchingPasswords(password, repeat) {
return (group: FormGroup) => {
// Check if both fields are the same
if (group.controls[password].value === group.controls[repeat].value) {
return null; // Return as a match
} else {
return { 'matchingPasswords': true }; // Return as error: do not match
}
};
}
@EDIT Использование простого <span>
вместо <md-error>
, похоже, исправляет это.
<span *ngIf="form.errors?.matchingPasswords">passwords don't match</span>
Но почему <md-error>
не появляется?