2016-11-24 7 views
3

私はangular2でionic2を使用していますが、formbuilderで作成したフォームがありますが、特定の入力の新しい変更を検出したいと考えています。Angular2:formbuilderの値の変更

ionViewDidLoad() { 
    this.purchaseDataForm = this.formBuilder.group({ 
    kms: ['', Validators.required], 
    lts: ['', Validators.required], 
    price: ['', Validators.required], 
    total: ['', Validators.required] 
    }); 
} 

だから、私のフォームが検証される方法ですが、私は価格のvaluechangesとLTS入力をサブスクライブしたい、あなたはそれを行う方法を知っていますか?

私は、次の機能をしようとしているが、それはCannot read property 'valueChanges' of undefined

ngOnInit() { 
    this.purchaseDataForm.price.valueChanges.subscribe(value => { 
    console.log(value); 
    }); 
} 

感謝を表示します!

答えて

1

私はイオンが分かりませんが、はngOnInit()の後に呼び出されます。コードをionViewDidLoad()からコンストラクタに移動するか、現在のコードの前にngOnInit()に移動してください。

あなたは価格がフォームの直接の属性ではありません

this.purchaseDataForm.get('price').valueChanges.subscribe(va‌​lue => { 
+0

エラーを保持しますが、私はionViewDidEnter()にエラーをvaluechangesコードを移動した場合、それは少し異なる 'ionViewDidEnterエラーです:プロパティ「valueChangesを読み取ることができません。 'of undefined'しかし、私の関数はvaluechangesを検出するのは大丈夫ですか? – SoldierCorp

+0

ああ、私は '価格'を逃した。 valueChanges.subscribe(value => {' –

+0

正しい命令は' this.purchaseDataForm.controls ['price']です。valueChanges.sub scribe(value => {' – SoldierCorp

3

を使用して価格統制を得ることができる必要があります。価格はフォームの「コントロール」オブジェクトにあります。だからあなたのコードは次のようになります。コンストラクタにコードを移動

ngOnInit() { 
    this.purchaseDataForm.controls.price.valueChanges.subscribe(value => { 
     console.log(value); 
    }); 
} 
+0

これは既に解決済みですが、とにかくありがとうございます。 – SoldierCorp

関連する問題