コントロールの titleCtrl が与えられた場合、その有効なプロパティを設定する方法はありますか?
私は試した
ダーツ
titleCtrl.valid = false;
しかし、それはエラーをスローします。ただし、有効な状態を取得することは問題ありません。
コントロールの titleCtrl が与えられた場合、その有効なプロパティを設定する方法はありますか?
私は試した
titleCtrl.valid = false;
しかし、それはエラーをスローします。ただし、有効な状態を取得することは問題ありません。
aのvalid
プロパティはControl
読み取り専用プロパティです。値を割り当てることはできません。何かを無効にする正しい方法は、カスタムバリデーターを作成することです
Angular2 TypeScript ドキュメントのコード スニペットの例を次に示します。
class CustomValidatorDirective implements Validator {
validate(c: Control): {[key: string]: any} {
return {"custom": true};
}
}
ただし、検証を別のクラスにする必要はありません。ControlGroup
使用して作成するFormBuilder
と、個々のコントロールにカスタム検証を設定できます。
@Component({...})
class MyComponent{
myForm: ControlGroup;
constructor(formBuilder: FormBuilder){
this.myForm = formBuilder.group({
myField: ['', Validators.compose([this.customValidation.bind(this)])],
});
}
customValidation(control: Control){
if(/* some condition */){
return {'myValidatorKey': true};
}
}
}
この手法を使用して、他のフィールドの値や他のロジックに依存するフィールドを含む任意のフィールドを検証できます。
悲しいことに、Angular2 チームはdartの使用に関するドキュメントをリリースしていないため、 dartで例を提供することはできませんが、回答をできるだけ一般的なものにするために、typescript 固有のノイズをできるだけ削除しようとしました。