一项服务的多个实例

时间:2019-07-17 15:43:19

标签: angular7

我有一个简单的服务

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class CompToCompService {
  private data = new Subject<any>();
  data$ = this.data.asObservable();

  constructor() { }

  Send(value: any) {
    this.data.next(value);
  }
}

我用它来在组件之间来回传递一些灯光数据。 但是,我发现自己需要在同一组件中使用两次以发送数据并使用不同的组件进行侦听。由于默认情况下角度服务现在是单例,因此所有内容都混杂在一起。 是否可以创建服务器的其他实例,如果是,则如何使侦听组件侦听正确的实例?

如果不是,最好的方法就是完成我想做的事情。我试图避免为我需要做的每一个通信创建一个微小的服务。我知道events,但我的交流是在routing-outlet上进行的,活动似乎并不像这样。

1 个答案:

答案 0 :(得分:1)

创建具有两个或更多子组件的父组件。 在每个子组件中使用

  

提供者:[serviceName]

然后,您将有两个service实例。 但是您必须使用其实例中的每个实例