我正在创建一个呈Angular 的形状, 我添加了一个确认密码字段,并且希望在密码不匹配时显示一条消息. 我try 了许多不同的方法--但都不起作用.我在控制台中添加了一条消息,它工作正常. 有没有人能帮我一下? 先谢谢你.
HTML个
<form [formGroup]="form">
<div class="form-group flex-container">
<label for="password">Password</label>
<input formControlName="password" id="password"
type="password" class="form-control">
<div *ngIf="password?.touched && password?.invalid" class="alert alert-danger">Password is required</div>
<label for="confirmPassword">Confirm password</label>
<input formControlName="confirmPassword" id="confirmPassword" type="password" class="form-control">
<div *ngIf="confirmPassword?.touched && confirmPassword?.invalid" class="alert alert-danger">Please verify your password.</div>
<div *ngIf="form.hasError('confirmPassword', 'validate')" class="alert alert-danger">Passwords do not match.</div>
<button id="submit" [disabled]="form.invalid">אישור</button>
</form>
TypeScript个
import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { PasswordValidators } from './password.validators';
@Component({
selector: 'customer-registration',
templateUrl: './customer-registration.component.html',
styleUrls: ['./customer-registration.component.css']
})
export class CustomerRegistrationComponent {
form = new FormGroup({
password: new FormControl('', Validators.required),
confirmPassword: new FormControl('', [Validators.required, PasswordValidators.validate])
});
ngOnInit() {
this.form.setValidators(PasswordValidators.validate);
}
get password() {
return this.form.get('password');
}
get confirmPassword() {
return this.form.get('confirmPassword');
}
import { AbstractControl, ValidationErrors, FormGroup, ValidatorFn } from '@angular/forms';
export class PasswordValidators {
static validate(control: AbstractControl): ValidationErrors | null {
const password = control.get('password')?.value;
const confirmPassword = control.get('confirmPassword')?.value;
if (password !== confirmPassword) {
console.log("passwords do not match");
return { confirmPassword: true };
}
return null;
}
}