Angular 2 Reactive Forms - 检测组件上的输入更改事件

Raf*_*L R 18 angular2-forms

我想在form.component.ts上检测change事件的值.我不想调用函数ex:(onChange)="function($ event.target.value)"

public form: FormGroup;

constructor(private formBuilder: FormBuilder){ 

}

private loadForm(){
    this.form = this.formBuilder.group({
        tipo: [null, Validators.required],
        nomeRazao: [null, Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(64)])],
        apelidoFantasia: [null, Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(64)])],
        cpfCnpj: [null, Validators.compose([Validators.required, Validators.minLength(11), Validators.maxLength(14)])],
        rgIe: [null],
        contato: this.formBuilder.group({
            email: [null],
            telefone: [null]
        }),
        endereco: this.formBuilder.group({
            cep: [null, Validators.pattern('^([0-9]){5}([-])([0-9]){4}$')],
            uf: [null],
            cidade: [null],
            bairro: [null, Validators.required],
            logradouro: [null],
            complemento: [null],
            numero: [null, Validators.pattern('/^\d+$/')]
        })
    });
}

ngOnInit() {
    this.loadForm();
}
Run Code Online (Sandbox Code Playgroud)

小智 34

您可以使用以下命令订阅表单更改:

this.form.valueChanges.subscribe(() => {
   if (this.registerForm.controls['yourControlName'].value === 'someValue') {
      // 
   }
 });
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,但更好的类型安全将是:this.form.valueChanges.subscribe((data)=> {if(data.yourControlName ==='someValue'){//}}); (3认同)

Dip*_*aul 15

为了检测特定字段值的变化,可以订阅该字段上的'valueChanges'事件,如下所示:

this.myForm.get('formcontrolname').valueChanges.subscribe(val => {
    this.message = val;
  });
Run Code Online (Sandbox Code Playgroud)