2017-06-17 6 views
5

arbeiten Ich möchte eine meiner Formen bekommen („Familie“) Wert, wenn durch subscribe geändert, aber es scheint etwas nicht in Ordnung, weil ich nichts auf meiner Konsole Protokoll bekam.Eckige Form Control valueChanges nicht

import { Component , AfterViewInit } from '@angular/core'; 
import {FormGroup,FormBuilder} from '@angular/forms'; 
import {Observable} from 'rxjs/Rx'; 

@Component({ 
selector: 'app-root', 
template: `<h1>Hello World!</h1> 
      <form [formGroup]="frm1"> 
      <input type="text" formControlName="name" > 
      <input type="text" formControlName="family"> 
      </form> 
      `, 

}) 

export class AppComponent implements AfterViewInit{ 

frm1 : FormGroup; 

constructor(fb:FormBuilder){ 
    this.frm1 = fb.group({ 
     name : [], 
     family: [] 
    });  
} 
ngAfterViewInit(){ 
    var search = this.frm1.controls.family; 
    search.valueChanges.subscribe(x => console.log(x));  
} 
} 
+0

Warum nicht eine 'Änderung verwenden()' Event-Handler in Ihrem HTML-Code der Eingabefelder ? – Abrar

Antwort

1

Verwenden get Methode auf Formularvariablen frm1

ngOnInit(){ 
     this.frm1.get('family').valueChanges.subscribe(x => console.log(x)); 
} 
+1

Ich habe das aber immer noch nichts auf meiner Konsole, wenn ich Wert eingegeben habe !!! –

+0

Platziere den Code in 'ngOnInit()' und versuche es. Es gibt keinen Grund, in 'ngAfterViewInit() ' –

+0

zu tun, danke jetzt seine Arbeit, kann ich wissen, warum AfterViewInit Problem hatte !! –

0

Try this:

import { Component , AfterViewInit, OnInit } from '@angular/core'; 
import {FormGroup,FormBuilder} from '@angular/forms'; 
import {Observable} from 'rxjs/Rx'; 

@Component({ 
selector: 'app-root', 
template: `<h1>Hello World!</h1> 
     <form [formGroup]="frm1"> 
     <input type="text" formControlName="name" > 
     <input type="text" formControlName="family"> 
     </form>`}) 

export class AppComponent implements AfterViewInit, OnInit{ 

frm1 : FormGroup; 

constructor(private formBuilder: FormBuilder){} 

ngOnInit(): void { 
    this.formInit(); 
    this.formSet(); 
} 

formInit(): void { 
    this.frm1 = this.formBuilder.group({ 
     name: [''], 
     family[''] 
    }) 
} 

formSet(): void { 
    const editForm = { 
     name: 'test-name', 
     family: 'test familty', 
    }; 
    this.frm1.patchValue(editForm) 
} 

ngAfterViewInit(){ 
this.frm1 .controls.family.valueChanges.subscribe(
     () => { 
       console.log(this.frm1 .controls.family.value) 
      } 
     ) 
     } 
} 
+0

bekam nichts auf der Konsole !!!! –

+0

Ich habe in meinem Projekt getestet: es funktioniert: Welchen Fehler bekommen Sie –

+0

Ich habe die Antwort aktualisiert. Versuche dies. Getestet –

Verwandte Themen