2016-11-24 6 views
3

Ich verwende ionic2 mit angular2 und ich habe eine Form mit Formbuilder gebaut, aber ich möchte neue Änderungen einer bestimmten Eingabe erkennen.Angular2: Subscribe Wertänderungen in Formbuilder

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

Also das ist, wie meine Form bestätigt wird, aber ich möchte die valuechanges des Preis und die LTS Eingänge abonnieren, wissen Sie, wie das zu tun?

Ich versuche, mit der folgenden Funktion, aber es zeigt Cannot read property 'valueChanges' of undefined

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

Dank!

Antwort

1

Ich weiß nicht Ionic, aber ich denke ionViewDidLoad() heißt nach ngOnInit(). Verschieben Sie einfach den Code von ionViewDidLoad() zum Konstruktor oder ngOnInit() vor dem aktuellen Code.

sollten Sie in der Lage sein, die Preiskontrolle zu bekommen

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

Bewegen Sie den Code an den Konstruktor hält den Fehler, aber wenn ich den valuechanges Code zum ionViewDidEnter(), um den Fehler zu bewegen ist es ein bisschen anders 'ionViewDidEnter Fehler: Kann nicht Eigentum‚valueChanges lesen 'von undefiniert', aber meine Funktion, die Wertänderungen zu erkennen, ist in Ordnung? – SoldierCorp

+0

Uh, ich habe den "Preis" verpasst. Versuchen Sie 'this.purchaseDataForm.get ('price'). ValueChanges.subscribe (value => {' –

+0

Die richtige Anweisung ist 'this.purchaseDataForm.controls ['price']. ValueChanges.sub scribe (value => {' bitte aktualisiere deine Antwort, damit ich sie akzeptieren kann, danke! – SoldierCorp

3

Der Preis mit keinem direkten Attribute des Formulars. Der Preis befindet sich im "controls" -Objekt Ihres Formulars. So sollte der Code wie folgt aussehen:

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

Es ist bereits gelöst, aber danke trotzdem. – SoldierCorp

Verwandte Themen