2017-06-17 19 views
5

Chcę uzyskać jedną z wartości moich formularzy ("rodziny"), jeśli zmieniono ją przez subskrybowanie, ale wydaje się, że coś jest nie tak, ponieważ nie mam nic w dzienniku konsoli.Wartość Angular Form Control Zmiany nie działają

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

Dlaczego nie używać 'zmiany()' obsługi zdarzeń w polach wprowadzania kodu HTML w ? – Abrar

Odpowiedz

1

Zastosowanie get metoda na zmiennej formy frm1

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

Zrobiłem to, ale wciąż mam nic na mojej konsoli, kiedy wprowadzam wartość !!! –

+0

Umieść kod w 'ngOnInit()' i spróbuj. Nie ma powodu, aby zrobić wewnątrz 'ngAfterViewInit()' –

+0

dziękuję teraz działa, mogę wiedzieć, dlaczego AfterViewInit miał problem! –

0

Spróbuj tego:

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

nie dostałem nic na konsoli !!!! –

+0

Testowałem w moim projekcie: działa: jaki błąd otrzymujesz –

+0

Mam zaktualizowaną odpowiedź. Spróbuj tego. Przetestowałem –

Powiązane problemy