7

Kendo Angular Grid コントロールを使用している Angular 4.10 アプリケーションがあります。外部編集を使用しています。以下のように FormGroup を作成しました。

        this.editForm = new FormGroup({
        'Id': new FormControl({ value: 0, disabled: true }),
        'Name': new FormControl("", Validators.compose([Validators.required, Validators.maxLength(30)])),
        'BlindName': new FormControl({ value: "" }, Validators.compose([Validators.required, Validators.maxLength(30)])),
        'UnitText': new FormControl(0),
        'IsFromBsp': new FormControl(true),
        'Disabled': new FormControl(false),
        'SortOrder': new FormControl(0, Validators.compose([Validators.required, Validators.pattern('\\d')]))
    });

私がやりたいことは、値 IsFromBsp に基づいてフィールド BlindName の無効状態を設定することです。何かのようなもの:

'BlindName': new FormControl({ value: "", disabled: this.IsFromBsp }, Validators.compose([Validators.required, Validators.maxLength(30)])),

これを達成する方法はありますか?私にお知らせください。ありがとう

4

2 に答える 2

8

の場合、入力フィールドを無効にしたいと思いIsFromBspますtrue。これが最初だけ必要な場合は、フォームを作成した後に関数を実行できます。

check() {
  if(this.editForm.get('IsFromBsp').value == true) {
    this.editForm.get('BlindName').disable()
  }
}

この値が変更された場合、なんらかの変更イベントでこの関数を再度呼び出す必要があります。フォーム値の変更を監視するために(change)使用するか、使用してください。値が他の値である場合は、再度有効にすることができます。これは「通常の」リアクティブ フォームで機能し、できれば剣道でも機能します。valueChangestruethis.editForm.get('BlindName').enable()

于 2017-05-31T17:21:27.250 に答える
0

この剣道がどのように機能するかはわかりませんが、html では次のようなことができます。

 <input type="text" [disabled]="form.controls['IsFromBsp']==='' && form.controls['IsFromBsp'].touched" formControlName="something"> 
于 2017-05-31T16:49:08.833 に答える