我有一个服务:
import { EventEmitter, Injectable } from '@angular/core';
@Injectable()
export class PingOnActionListenerService {
removingListener = new EventEmitter();
removeListener(): void {
this.removingListener.emit();
}
Run Code Online (Sandbox Code Playgroud)
在组件 AI 处调用服务:
this._pingOnActionListenerService.removeListener();
Run Code Online (Sandbox Code Playgroud)
在组件BI想要监听服务:
ngOnInit() {
this._pingOnActionListenerService.removingListener.subscribe(this.deactivatelistener());
}
deactivatelistener() {
window.removeEventListener('click', this.pingIfLastPingIsOld);
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我在控制台上收到错误消息:
core.js:1671 错误 TypeError:generatorOrNext 不是 SafeSubscriber.schedulerFn [as _next] (core.js:3565) 的函数,位于 SafeSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js:195) 在 SafeSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.next (Subscriber.js:133) 在 Subscriber.push../node_modules/rxjs/_esm5/internal /Subscriber.js.Subscriber._next (Subscriber.js:77) 在 Subscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next (Subscriber.js:54) 在 EventEmitter.push.. /node_modules/rxjs/_esm5/internal/Subject.js.Subject.next (Subject.js:47) 在 EventEmitter.push../node_modules/@angular/core/fesm5/core.js.EventEmitter.emit (core.js :3537) 在PingOnActionListenerService.push../src/app/core/services/ping-on-action/ping-on-action-listener.service.ts.PingOnActionListenerService.removeListener (ping-on-action-listener.service. ts:19) 在 CatchSubscriber.selector (logging-interceptor.ts:45) 在 CatchSubscriber.push../node_modules/rxjs/_esm5/internal/operators/catchError.js.CatchSubscriber.error (catchError.js:33)
虽然与OP的问题没有直接关系,但我发布此内容以防对其他人有帮助。
该错误generatorOrNext is not a function可能是由执行类似于下面的操作引起的,其中没有传递给 .subscribe() 的回调。
this.subject.valueChanges.subscribe(
// (newVal) => console.log(newVal)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8243 次 |
| 最近记录: |