首页 > 解决方案 > Angular 是在组件之间重用服务的好习惯

问题描述

我有一个服务:

export class LangService {
  public test = "hi";
}

父组件:

import {LangService} from "./services/lang.service";
export class ParentComponent {
  constructor(private _lang: LangService) {
    _lang.test = "bye";
  }
}

还有一个子组件:

import {LangService} from "./services/lang.service";
export class ChildComponent {
  constructor(private _lang: LangService) {
    console.log(_lang.test); //Here is printing "bye" and not "hi" exactly as I'm expecting
  }
}

两个组件都使用我的LangService的同一个实例

我已经读过要进行正确的组件交互,Angular 文档提出了一些方法,其中之一是使用服务进行通信并订阅服务的可观察对象

我的问题是。仅使用服务的变量而不是服务的订阅者来通信组件是一种好习惯吗?

标签: angularangular-servicesangular-components

解决方案


这不像您选择Observable或任何Subject(然后订阅它们)而不是使用普通变量。

当您通过先前订阅服务从服务中获得一些价值并观察您期望该价值会随着时间或某些操作而变化时,您会注意到它。这是更好的方法,而不是通过例如手动签入组件。10 秒或点击按钮后。


推荐阅读