在2个服务之间共享数据

时间:2020-06-08 17:31:28

标签: angular

我有2个不同的服务,并且我希望一个服务知道另一个服务的实例,但是我需要将该实例作为单例来。 到目前为止,我读过的所有材料都是关于组件之间而不是服务之间共享数据的。

2 个答案:

答案 0 :(得分:0)

如果在服务文件定义中使用:

@Injectable({
 providedIn: 'root',
})

然后服务将成为您应用程序的单例。为了共享数据,最好使用rxjs。

答案 1 :(得分:0)

这是我对注射机制的理解。为类设置@Injectable装饰器时,Angular会尝试为当前执行链的注入器中的相应类型创建或获取实例。

service1.ts

 @Injectable()
    export class Service1 {
      constructor(private service2:Service2) {}

      getData() {
        return this.service2.getData();
      }
    }

Service2.ts

@Injectable()
export class Service2 {

  getData() {
    return [
      { message: 'message1' },
      { message: 'message2' }
    ];
  }
}