Angular 11 在一个服务的不相关组件之间共享数据

Angular 11 share data between unrelated components which a service

我正在使用 Angular 11 并且我在 componentB 中有很多方法(以一种方式调用它)

我现在必须从 componentA 调用 componentB 中的许多方法。

我知道我可以将所有方法移动到一个服务中,但在这种情况下,这将需要大量工作,我只需要一个快速的解决方法。

所以我想保持 componentB 的原样,并能够从 componentA 调用它的方法。

componentA 和 componentB 没有关联。

是否有解决方法可以做到这一点而不必将方法移出 componentB?

你可以通过服务来完成,它会被注入到两个组件中 服务可以像这样

@Injectable()
class MyDataService implements IMyDataService  {
 
    private whenMessageRecieved$: Subject<MyDataType> =
        new ReplaySubject(1);
 
    constructor(
    ) {
    }
 
    public notify(someData: MyDataType): void {
        this.whenMessageRecieved$.next(someData);
    }
 
    public whenMessageRecieved(): Observable<MyDataType> {
        return this.whenMessageRecieved$.asObservable();
    }
}

ComponentB 应该订阅 whenMessageRecieved() 并且 componentA 应该使用严格的参数调用通知。在不久的将来,此服务将帮助您从 componentB

迁移方法

但仍然 - 将公共逻辑存储在其他地方会更好,而不是在 componentB