Angular是在组件之间重用服务的良好实践

时间:2018-06-21 14:35:00

标签: angular angular-services angular-components

我有服务:

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文档提出了一些方法,其中一种方法是使用服务进行通信并订阅服务的可观察对象

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

1 个答案:

答案 0 :(得分:1)

并不是选择ObservableSubject(然后订阅它们)中的任何一个,而不是使用普通变量。

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