首页 > 解决方案 > 一项服务的多个实例

问题描述

我有一个简单的服务

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,事件似乎不喜欢那样。

标签: angular7

解决方案


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

提供者:[服务名称]

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


推荐阅读