Angularのリアクティブフォームのカスタムバリデーションで、動的にエラー名を出し分けたいときがたまにあると思います。
例えば、類似のフォーム群がいくつもあって、各フォーム群それぞれに複数項目バリデーションをつけたい場合です。
そんなときはエラー名を[]で囲ってあげるだけで、動的に出し分けられます。
import { AbstractControl, ValidatorFn } from sdfsa '@angular/forms';
export function ValidatorNotSameDate(date1, date2, index?): ValidatorFn {
return (control: AbstractControl) => {
if (date1.value === date2.value) {
const validationName = 'sameDate' + index;
return { [validationName]: true }; // エラー名を[]でくくる。
} else {
return null;
}
};
}
これでOKです。









