角度formControl值更改不起作用([formControl] .valueChanges)不起作用

时间:2019-04-12 20:10:25

标签: angular typescript

[formControl] .valueChanges不起作用

.html

<span>Test</span>
<input type="number" [formControl]="testForm">

.ts

testData: EventEmitter<any> =  new EventEmitter<any>();
testForm: FromControl;

constructor() {
 this.testForm = new FormControl();
}

this.testForm.valueChanges.subscribe(() => {
 const data: any = {
 value: this.testForm.value
 }
this.testData.emit(data);
});

在更改输入时,我试图发出该值,看起来好像有问题,testForm.valueChanges无法正常工作,我需要对此进行更改吗?

2 个答案:

答案 0 :(得分:1)

尝试将订阅移至构造函数中-下面的示例。

testForm = new FormControl('');

constructor() {
    this.testForm.valueChanges.subscribe(value => {
        console.log(value);
    });
};

答案 1 :(得分:-4)

您不能在formGroup之外拥有formControl。

关注angular的教程:https://angular.io/guide/reactive-forms

我已经将该函数放在ngOnInit生命周期上,并且可以正常工作。这是一个工作示例: https://stackblitz.com/edit/angular-valuechanges

编辑:添加了代码

import { Component,EventEmitter } from '@angular/core';
import { FormControl } from '@angular/forms';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  testForm: FormControl = new FormControl('');
  testData: EventEmitter<any> = new EventEmitter<any>();

  ngOnInit(){
    this.testForm.valueChanges.subscribe(() => {
      const data: any = {
        value: this.testForm.value
      }
      console.log(JSON.stringify(data));

      this.testData.emit(data);
    });
  }
}