首页 > 解决方案 > 为什么我在 Angular 6 中的服务出现错误?

问题描述

我有一个服务:

import { EventEmitter, Injectable } from '@angular/core';

@Injectable()
export class PingOnActionListenerService {
    removingListener = new EventEmitter();

    removeListener(): void {
        this.removingListener.emit();
    }

在组件 AI 调用服务:

this._pingOnActionListenerService.removeListener();

在组件 BI 上要监听服务:

    ngOnInit() {
        this._pingOnActionListenerService.removingListener.subscribe(this.deactivatelistener());
    }

    deactivatelistener() {
        window.removeEventListener('click', this.pingIfLastPingIsOld);
    }

当我运行此代码时,我在控制台收到错误消息:

core.js:1671 错误类型错误: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)

标签: angularangular6

解决方案


虽然与 OP 的问题没有直接关系,但我将其发布以防它对其他人有所帮助。

错误generatorOrNext is not a function可能是由执行类似于以下的操作引起的,其中没有传递给 .subscribe() 的回调。

this.subject.valueChanges.subscribe(
    // (newVal) => console.log(newVal)
);

推荐阅读