如何在 Angular2 中将 Observables 运算符与 EventEmitter (FormModel.valueChanges) 一起使用

How to use Observables operators with EventEmitter (FormModel.valueChanges) in Angular2

我正在尝试在 EventEmitter(来自 FormModel.valueChanges)上使用一些简单的运算符,但我不知道应该如何完成。

class EventEmitter 扩展自 Subject
export declare class EventEmitter<T> extends Subject<T>
所以我尝试了几件事:

this.patientForm.valueChanges.debounceTime(400) this.patientForm.valueChanges.source.debounceTime(400) this.patientForm.valueChanges.asObservable().debounceTime(400) Observable.create(this.patientForm.valueChanges).debounceTime(400)

在构造函数和 ngOnInit 中尝试过
源始终未定义,并且 class.

中不存在运算符

我有这个导入 import {Observable} from 'rxjs'; 可能与那个有关吗?

(我想做的是将表单状态保存在 Redux 存储中,但不想在每次击键时都这样做)

您需要导入运算符

import 'rxjs/add/operator/debounceTime'

或一次全部

import 'rxjs/Rx';

正如 Günter 所说,默认情况下不包含运算符

要导入 Observable class,只需使用以下命令。在这种情况下,您将拥有 Observable class:

中的所有运算符
import {Observable} from 'rxjs/Rx';

要仅使用 debounceTime 运算符,您可以使用:

import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/debounceTime';

那么debounceTime运算符的正确使用方法是:

this.patientForm.valueChanges.debounceTime(400).subscribe((val) => {
  (...)
});

有关详细信息,请参阅本文: