我在angular 6中有一个简单的表单,只有一个文本字段和一个下拉列表。我想要的是观察该表格并检查该表格中的所有更改。因此,无论是在文本字段中键入字母还是在下拉列表中进行更改,我都想调用一个函数。
表单组是这样的
nameForm = this.formBuilder.group({
name:['',Validators.required],
cepDrop:['construction']
});
我的逻辑是
每次表单值更改时,请稍等一会,直到没有其他更改为止,抓住表单对象,将其包含内容映射到函数中,然后订阅该函数的结果。
ngOnInit() {
this.nameForm.valueChanges
//.debounceTime(400)
//.distinctUntilChanged()
.map( terms => this.mapcmsService.searchName(terms.name, terms.cepDrop))
.subscribe( value => console.log(value));
}
首先debounceTime
和distinctUntilChanged
给出错误Property 'debounceTime' does not exist on type 'Observable<any>'.
主要问题是map
也给出相同的错误。 Property 'map' does not exist on type 'Observable<any>'.
该怎么办,所以我可以解决此问题?如何观察整个表单组并将其值映射到函数?
谢谢
答案 0 :(得分:2)
那是做rxjs的旧方法。现在,您应该像这样将额外的运算符传递给pipe
运算符:
import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
...
this.nameForm.valueChanges.pipe(
debounceTime(400),
distinctUntilChanged(),
map(terms => this.mapcmsService.searchName(terms.name, terms.cepDrop))
).subscribe( value => console.log(value));