首页 > 解决方案 > Angular 7:Observable 未能发出事件

问题描述

我正在使用 Observable 实现组件通信,但不知何故我无法通过 observable 订阅 emmited 事件,请在下面找到我的代码

服务代码:

import { Observable, Subject } from 'rxjs';
export class MessageService {
    private subject = new Subject<any>();

    sendMessage(message: string) { 
        console.log('sendMesg',message)
        this.subject.next({ text: message });
    }
    clearMessage() {
        this.subject.next();
    }

    getMessage(): Observable<any> {
        console.log("in Message");
        return this.subject.asObservable();
    }
}

组件 1 代码

  this.http.postMethod("report/PrintReport", data).subscribe((res: any) => {
          if (res.Message == 'Print Successfull') {
            this.messageService.sendMessage('Print Successfull');
            swal("Print Successfull..!", "", "success");

          } else {
            this.messageService.sendMessage('Print Failed');
            swal("Print Failed", "", "error");
          }
        }, err => {
          this.errorHandling.checkError(err.status);
        });

组件 2 代码:

    ngOnInit() {
    this.messageService.getMessage().subscribe(res =>{ 
    console.log('res', res); 
    }, err => {
    console.log('errrorr', err) })
    }

我能够sendMessage从服务记录功能,但我无法记录getMessage订阅的功能给出的结果component 2

标签: angular7

解决方案


确保两个组件的提供者没有不同。您的服务应该在两个组件的根模块中注册,它们可以共享相同的服务实例

确保您已在 app.module 中注册服务以在组件之间共享公共实例。


推荐阅读