0

コントロールの titleCtrl が与えられた場合、その有効なプロパティを設定する方法はありますか?

私は試した

ダーツ

titleCtrl.valid = false;

しかし、それはエラーをスローします。ただし、有効な状態を取得することは問題ありません。

4

1 に答える 1

2

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 チームはで例を提供することはできませんが、回答をできるだけ一般的なものにするために、typescript 固有のノイズをできるだけ削除しようとしました。

于 2016-02-06T03:11:18.417 に答える