angular - Angular 数据服务被调用两次
问题描述
我有一个 Angular 7 应用程序在调用服务两次时遇到问题。
我有多个连接到 websocket 的 observables。在套接字中,我正在监听不同的事件发生并执行适当的操作。
app.module.ts
import { DataService } from './data.service';
....
providers: [
DataService
],
one.component.ts
import { DataService } from './data.service';
....
constructor(private data: DataService) { }
....
ngOnInit() {
this.data.receiveMessage().subscribe(msg => {
this.msg = msg;
});
}
两个.component.ts
import { DataService } from './data.service';
....
constructor(private router: Router, private data: DataService) { }
ngOnInit() { }
....
数据服务.ts
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import * as io from 'socket.io-client';
@Injectable()
export class DataService {
receiveMessage() {
return new Observable(observer => {
this.socket.on('sendMessage', msg => {
observer.next(msg);
});
});
}
....
other observables
}
如果我使用 Injectable provider root 也会发生同样的事情。
我在应用程序中使用了其他可观察对象,但这只是我在 OnInit 中使用的一种方法,但将其取出会导致应用程序停止工作。
解决方案
在 app.component.html 中添加,导致整个应用程序呈现两次
推荐阅读
- javascript - 在 Reactstrap 不受控制的轮播组件中自定义图像样式
- css - Vuetify css not applying in Heroku
- c - 变量“returnedstring”周围的堆栈已损坏
- typescript - 如何在打字稿中用“任何额外数量的字段”来描述一个对象?
- magento - Minicart 无法加载组件 Magento 2
- python - Pandas / Python = 通过将 Y 列与在 X 中具有值的另一行匹配来替换 X 列中的 NaN 值的函数
- javascript - 没有单元格注释的数据表导出
- python - 如何遍历 Python 数据框,我偶尔需要用一行就地替换两行?
- r - R:如何计算可能的列组合的总和
- html - 响应式 Masonry/Packary 与其他图像和 DOM 元素重叠