我有一个反应形式,带有文字输入。为了便于访问我的打字稿,我宣布:
get parentId(): FormControl {
return this.addForm.get("parentId") as FormControl;
}
此部分有效,控制权已正确访问。
如果我这样做,现在在我的ngOnInit中:
this.parentId.valueChanges.subscribe(() => console.log("Changed"));
控制台日志在输入中更改的每个字符上执行,如预期的那样。但如果我这样做:
this.parentId.valueChanges.pipe(tap(() => console.log("Changed")));
什么都没发生。没有错误,没有任何错误。我也尝试过使用map,switchMap等等。似乎管道对valueChanges不起作用。我在我的代码中的其他地方使用管道方法在不同的observables上没有任何问题。
我需要在这里使用管道去抖动,映射等。
知道我做错了吗?
- 编辑 -
这是Angular Material网站上自动填充组件的代码示例:
ngOnInit() {
this.filteredOptions = this.myControl.valueChanges
.pipe(
startWith(''),
map(val => this.filter(val))
);
}
最后没有订阅,示例有效。
答案 0 :(得分:5)
您需要使用subsrcibe来激活可观察的
ngOnInit() {
this.filteredOptions = this.myControl.valueChanges
.pipe(
startWith(''),
map(val => this.filter(val))
).subscribe();
}