Angular 2 中 EventEmitter.next() 和 EventEmitter.emit() 的区别
Difference between EventEmitter.next() and EventEmitter.emit() in Angular 2
EventEmitter.emit()
和EventEmitter.next()
有什么区别?两者都将事件分派给订阅的侦听器。
export class MyService {
@Output() someEvent$: EventEmitter<any> = new EventEmitter();
someFunc() {
this.someEvent$.emit({myObj: true});
this.someEvent$.next({myObj: true});
}
}
documenation for the EventEmitter 目前没有太大帮助。
他们也这样做。 emit()
是当前版本,next()
已弃用。
在最新版本(Ng9)中,event_emitter.ts
的源代码如下:
export class EventEmitter<T extends any> extends Subject<T> {
/**
* Emits an event containing a given value.
* @param value The value to emit.
*/
emit(value?: T) { super.next(value); }
}
EventEmitter
从父 class Subject
扩展而来。正如您所料,emit
方法调用 super.next()
。
EventEmitter.emit()
和EventEmitter.next()
有什么区别?两者都将事件分派给订阅的侦听器。
export class MyService {
@Output() someEvent$: EventEmitter<any> = new EventEmitter();
someFunc() {
this.someEvent$.emit({myObj: true});
this.someEvent$.next({myObj: true});
}
}
documenation for the EventEmitter 目前没有太大帮助。
他们也这样做。 emit()
是当前版本,next()
已弃用。
在最新版本(Ng9)中,event_emitter.ts
的源代码如下:
export class EventEmitter<T extends any> extends Subject<T> {
/**
* Emits an event containing a given value.
* @param value The value to emit.
*/
emit(value?: T) { super.next(value); }
}
EventEmitter
从父 class Subject
扩展而来。正如您所料,emit
方法调用 super.next()
。