Angular2:在formbuilder中订阅valuechanges

时间:2016-11-24 16:51:40

标签: angular angular2-forms formbuilder

我正在使用ionic2和angular2,我有一个用formbuilder构建的表单,但我想检测某个输入的新变化。

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

这就是我的表单验证的方式,但我想订阅价格 lts 输入的价值变化,你知道怎么做吗?

我正在尝试使用以下功能但显示Cannot read property 'valueChanges' of undefined

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

谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

我不知道Ionic,但我想在ionViewDidLoad()之后调用ngOnInit()。只需将代码从ionViewDidLoad()移动到构造函数或在当前代码之前移动到ngOnInit()

您应该可以使用

获得价格控制
this.purchaseDataForm.get('price').valueChanges.subscribe(va‌​lue => {