angular7 - 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
解决方案
确保两个组件的提供者没有不同。您的服务应该在两个组件的根模块中注册,它们可以共享相同的服务实例
确保您已在 app.module 中注册服务以在组件之间共享公共实例。
推荐阅读
- oracle - 如何使用变量 Oracle Sql 从多个值中获取结果?
- mysql - 基于第一排序的多个二级排序
- tfs - 导入工作项 xml 时出现“缺少根元素”错误
- keras - 使用共享层保存 keras 模型
- php - 如何使用 curl 在谷歌事件日历 API 中添加附件?
- download - telegram android 使用什么类型的库来下载和上传文件?
- mobile - 滚动时如何隐藏 BottomNavigationBar - Flutter
- devexpress - devexpress RepositoryItemRadioGroup 项目文本被剪裁
- firebase - 反应本机警报功能
- ios - Xcode 9:在 Xcode 9 上运行时,向表格视图单元格添加了奇怪的侧边填充