Angular2:在formbuilder中订阅valuechanges

问题描述:

我正在使用ionic2和angular2,我有一个用formbuilder构建的表单,但我想检测某个输入的新更改。Angular2:在formbuilder中订阅valuechanges

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); 
    }); 
} 

谢谢!

我不知道离子,但我猜ionViewDidLoad()之后调用ngOnInit()。只需将代码从ionViewDidLoad()移到构造函数或ngOnInit()之前的当前代码。

你应该能够得到使用

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

移动代码构造保持了错误,但如果我的valuechanges代码移到ionViewDidEnter()的错误这是一个有点不同'ionViewDidEnter错误:无法读取属性“valueChanges '未定义',但我的函数来检测valuechanges是好的? – SoldierCorp

+0

呃,我错过了'价格'。尝试'this.purchaseDataForm.get('price')。valueChanges.subscribe(value => {' –

+0

正确的指令是'this.purchaseDataForm.controls ['price']。valueChanges.sub scribe(value => {请更新您的答案,以便我可以接受它,谢谢! – SoldierCorp

的价格是不是你的形式直接属性的价格控制。价格位于表单的“控件”对象中。所以,你的代码应该是这样的:

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

它已经解决,但无论如何谢谢。 – SoldierCorp