Angular 6 - rxjs管道不能处理valueChanges

时间:2018-05-24 10:24:18

标签: angular rxjs observable angular6

我有一个反应形式,带有文字输入。为了便于访问我的打字稿,我宣布:

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))
       );
}

最后没有订阅,示例有效。

1 个答案:

答案 0 :(得分:5)

您需要使用subsrcibe来激活可观察的

ngOnInit() {
   this.filteredOptions = this.myControl.valueChanges
       .pipe(
          startWith(''),
          map(val => this.filter(val))
       ).subscribe();
}