これを実装するには、完全なフォーム グループにバリデータを割り当てる必要があります。そんな感じ:
this.form = fb.group({
name: ['', Validators.required],
email: ['', Validators.required]
matchingPassword: fb.group({
password: ['', Validators.required],
repeatPassword: ['', Validators.required]
}
}, {validator: this.areEqual})); <--------
このようにして、1 つだけでなく、グループのすべてのコントロールにアクセスできます。これcontrols
には、グループ コントロールのプロパティを使用してアクセスできます。後者 (単一のものではない) は、検証がトリガーされたときに直接提供されます。例えば:
areEqual(group: ControlGroup) {
var valid = false;
for (name in group.controls) {
var val = group.controls[name].value
(...)
}
if (valid) {
return null;
}
return {
areEqual: true
};
}
詳細については、この質問を参照してください。