2017-08-10 6 views
1

フォームに変更があるときはいつでもチェックボックスをオフにします。チェックボックスはそのフォームの一部ですので、値の変更がそのチェックボックス以外の他のコントロールから来た場合は、チェックを外したいだけです。Angular2 FormGroup - どのコントロールが値変更をトリガーしたかを確認する方法

私が個別に他のすべてのコントロールにvalueChangesを購読することができますが、そう

+0

(私はその目的から推測するように)何らかの方法でチェックボックスを読み取り専用にする必要がありますか? – Vega

+0

チェックボックスは、入力したすべてが真実であることに同意するものではありません。あなたが同意して、フィールドを変更するために戻ってきたら、私はそれをオフにしたいと思います。 – Fernando

答えて

0

使用ネストされたフォーム・グループをやって避けたいので

import { FormBuilder, FormGroup } from '@angular/forms'; 
export class App { 
    form : FormGroup; 
    constructor(private formBuilder: FormBuilder) { 
     this.form = formBuilder.group({ 
      firstName: 'Thomas', 
      lastName: 'Mann', 
      ... many more fields ... 
      checkbox: true 
     }) 

     this.form.valueChanges.subscribe(data => { 
      //if valueChange was not triggered by change in the checkbox 
      this.form.get('checkbox').setValue(false); 
     }) 
    } 
} 

ようFormGroupの値の変化に加入しています...グループあなたは、チェックボックスの値を更新したい単一formGroup内の他のすべてのformControl ...例えば

import { FormBuilder, FormGroup } from '@angular/forms'; 

export class App { 
    form : FormGroup; 

    constructor(private formBuilder: FormBuilder) { 
     this.form = formBuilder.group({ 
      'otherFormField': this.fb.group({ 
       firstName: 'Thomas', 
       lastName: 'Mann', 
       ... many more fields ... 
      }),  
      checkbox: true 
     }) 

     this.form.otherFormField.valueChanges.subscribe(data => { 
      //if valueChange was not triggered by change in the checkbox 
      this.form.get('checkbox').setValue(false); 
     }) 
    } 
+0

これは素晴らしい作品です、ありがとうございます!私はあなたをアップアップしますが、私は十分な評判を持っていません – Fernando

関連する問題