Angular FormControl valueChanges 不起作用
Angular FormControl valueChanges doesn't work
如果通过订阅更改,我想获得我的表单(“家庭”)值之一,但似乎出了点问题,因为我的控制台日志中没有任何内容。
import { Component , AfterViewInit } from '@angular/core';
import {FormGroup,FormBuilder} from '@angular/forms';
import {Observable} from 'rxjs/Rx';
@Component({
selector: 'app-root',
template: `<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));
}
}
对表单变量 frm1
使用 get
方法。并使用 ngOnInit()
而不是 ngAfterViewInit()
ngOnInit() {
this.frm1.get('family').valueChanges.subscribe( x => console.log(x));
}
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)
}
)
}
}
该问题已使用订阅,但以防万一像我这样的人在阅读标题后登陆这里。 valueChanges
也不适合我,但出于其他原因。
我正在为我的项目使用 material 步进器和自动完成。他们网站上的示例代码过滤了地图中的数据,但没有用。
this.filteredOptions = this.myControl.valueChanges.pipe(startWith(''), map(value => this._filter(value)));
但是订阅 valueChange
有效并过滤了数据。
this.myControl.valueChanges.pipe(startWith('')).subscribe(value => this.filteredOptions = of(this._filter(value)));
如果通过订阅更改,我想获得我的表单(“家庭”)值之一,但似乎出了点问题,因为我的控制台日志中没有任何内容。
import { Component , AfterViewInit } from '@angular/core';
import {FormGroup,FormBuilder} from '@angular/forms';
import {Observable} from 'rxjs/Rx';
@Component({
selector: 'app-root',
template: `<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));
}
}
对表单变量 frm1
使用 get
方法。并使用 ngOnInit()
而不是 ngAfterViewInit()
ngOnInit() {
this.frm1.get('family').valueChanges.subscribe( x => console.log(x));
}
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)
}
)
}
}
该问题已使用订阅,但以防万一像我这样的人在阅读标题后登陆这里。 valueChanges
也不适合我,但出于其他原因。
我正在为我的项目使用 material 步进器和自动完成。他们网站上的示例代码过滤了地图中的数据,但没有用。
this.filteredOptions = this.myControl.valueChanges.pipe(startWith(''), map(value => this._filter(value)));
但是订阅 valueChange
有效并过滤了数据。
this.myControl.valueChanges.pipe(startWith('')).subscribe(value => this.filteredOptions = of(this._filter(value)));