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;
}
Dans la définition officielle Angular 2 TypeScript, il semble qu'il n'y ait aucun moyen de désactiver ou de vous désabonner d'EventEmitter.
J'ai reçu un rappel au fil du temps car les pages utilisent le même EventEmitter
EventEmitter étend le sujet. Lorsque vous vous abonnez à un sujet, vous obtenez un Subscription
que vous pourrez ensuite utiliser pour vous désinscrire.
someOutput:EventEmitter = new EventEmitter();
...
this.subscription = someOutput.subscribe(...);
...
this.subscription.unsubscribe();
indice
N'utilisez pas EventEmitter
pour autre chose que @Output()
s. Angular ne garantit pas que EventEmitter
continuera à étendre Subject
ou même fonctionnera de manière similaire à un Subject
à l'avenir.
Parce que EventEmitters devrait niquement utilisé pour émettre des événements à partir de composants , et donc ils ne devraient pas être abonnés, il n'est pas nécessaire de Angular pour fournir un moyen de se désinscrire).
Si vous n'utilisez pas de propriété de sortie dans un composant, utilisez un Observable ou un Subject au lieu d'un EventEmitter.
Peut-être qu'ils devraient changer le nom en OutputPropertyEmitter.