あなたは行動値
class MyComponent {
constructor(fb:FormBuilder) {
this.form = fb.group({
c1: ['', (c) => this.myValidator(c)],
...
});
}
someState = true;
myValidator(c:Control) {
if(this.someState && control.value ....) {
}
}
}
に応じて変更するカスタムバリデータを使用することができます。私は、現時点ではやっている何を
は、私はこのようなグループにバリデータを入れていますこのように、バリデータは、例えば、現在のコンポーネントの状態にアクセスすることができる。バリデーターを別のクラスに移動し、そのクラスのメソッド参照をバリデーター・パラメーターに渡して、このクラスのプロパティーを更新してバリデーターの動作を変更することもできます。
class MyValidator {
someState = true;
validate(c:Control) {
if(this.someState && control.value ....) {
}
}
}
class MyComponent {
myValidator = new MyValidator();
constructor(fb:FormBuilder) {
this.form = fb.group({
c1: ['', this.myValidator.validate.bind(this.myValidator)],
...
});
}
onSomeEvent() {
this.myValidator.someState = !this.myValidator.someState;
this.form.control.c1.updateValueAndValidity();
}
}
これは基本的に私がやっていることですが、実行時にどのようにコントロールの検証を変更できるかを知りたいと思います。これは可能ですか? – uksz
これはサポートされていません。コントロールを削除し、異なるバリデータが設定されている別のコントロールを追加することができます。 –
答えの中のソリューションと比較してバリデータを追加/削除することで、どのような効果が期待できますか? –