Angular数据服务被调用两次

时间:2019-07-06 05:26:37

标签: angular

我有一个angular 7应用程序,它在两次调用服务时遇到问题。

我有多个可观察物连接到一个websocket。在套接字中,我正在侦听发生的不同事件并执行适当的操作。

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;
  });
}

two.component.ts

import { DataService } from './data.service';
....
constructor(private router: Router, private data: DataService) { }
ngOnInit() { }
....

data.service.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中使用的只是这一种方法,但是将其取出会使应用程序停止工作。

1 个答案:

答案 0 :(得分:0)

添加到app.component.html中,这导致整个应用程序呈现两次