Я приведу здесь одну реализацию.
https://stackblitz.com/edit/angular-hm7967
И вставьте сюда код в любом случае.
Шаблон
<code><div>
<form [formGroup]="formGroup">
<label for="fieldOne" id="fieldOne">Field One: </label>
<input type="text" formControlName="fieldOne"/><br/>
<label for="fieldTwo">Field Two: </label>
<input type="text" id="fieldTwo" formControlName="fieldTwo" />
</form>
<pre>
{{formGroup.valid}}
Компонент
import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators, AbstractControl } from '@angular/forms';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
public formGroup: FormGroup;
constructor(){
this.formGroup = new FormGroup({
fieldOne: new FormControl('', [Validators.required]),
fieldTwo: new FormControl('', [Validators.required]),
}, [
this.customValidation
]);
}
private customValidation(form: FormGroup){
console.log(form);
const fieldOne : AbstractControl = form.get('fieldOne');
const fieldTwo : AbstractControl = form.get('fieldTwo');
if (fieldOne.value === fieldTwo.value) {
return {
customValidation: true
}
}
return null;
}
}