一项服务的多个实例

Multiple instances of one service

我有一个简单的服务

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

我用它在组件之间来回传送一些光数据。 然而,我发现自己需要在同一个组件中使用它两次来发送数据并使用不同的组件来监听。由于 angular 服务现在默认为单例,所有内容都混杂在一起。 是否可以创建不同的服务器实例?如果可以,我如何让监听组件监听正确的实例?

如果不是,那么完成我想要做的事情的最佳方式是什么。我试图避免为我需要做的每一次交流创建一个像这样的小服务。我知道 events,但我的通信是跨 routing-outlet 的,事件似乎不喜欢那样。

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

providers: [serviceName]

那么您将拥有两个服务实例。 但你必须在它们的组件中处理每个实例