export declare class EventEmitter<T> extends Subject<T> {
/**
* Creates an instance of [EventEmitter], which depending on [isAsync],
* delivers events synchronously or asynchronously.
*/
constructor(isAsync?: boolean);
emit(value: T): void;
/**
* @deprecated - use .emit(value) instead
*/
next(value: any): void;
subscribe(generatorOrNext?: any, error?: any, complete?: any): any;
}
Official Angular 2 TypeScript定義では、EventEmitterをミュートまたはサブスクライブ解除する方法がないようです。
ページが同じEventEmitterを使用するため、時間の経過とともにコールバックが発生しました
EventEmitterはSubjectを拡張します。サブジェクトをサブスクライブすると、Subscription
を取得します。これは後でサブスクライブ解除に使用できます。
_someOutput:EventEmitter = new EventEmitter();
...
this.subscription = someOutput.subscribe(...);
...
this.subscription.unsubscribe();
_
ヒント@Output()
s以外にはEventEmitter
を使用しないでください。 Angularは、EventEmitter
がSubject
を拡張し続けること、または将来的にSubject
と同様に動作することを保証しません。
EventEmitterは コンポーネントからイベントを発行するためにのみ使用される であり、したがってサブスクライブされるべきではないため、Angularがサブスクライブを解除する手段を提供する必要はありません。
コンポーネントで出力プロパティを使用していない場合は、EventEmitterの代わりにObservableまたはSubjectを使用します。
名前をOutputPropertyEmitterに変更する必要があるかもしれません。