【问题标题】:Angular is good practice to re-use service among componentsAngular 是在组件之间重用服务的好习惯
【发布时间】:2018-11-30 22:35:03
【问题描述】:

我有一个服务:

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

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

【问题讨论】:

    标签: angular angular-services angular-components


    【解决方案1】:

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

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

    【讨论】:

    • 如果我们不想使用 observables 是否仍然可以安全地只使用可注入变量中的变量?
    • 通过“仅使用可注入变量中的变量”,我了解您注入的服务有一些您可以访问的成员。我相信在您知道何时需要检查并获取此值之前它是安全的,因为您没有观察到此值的变化。
    • 我明白了。因此,在我看来,我正在做类似 {{ _lang.test }} 的事情,那么服务属性的任何更改都将在我的视图中正确呈现。总之,对于这个特定的示例,仅使用变量不是一种不好的做法吗?
    猜你喜欢
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2020-08-25
    • 2022-06-28
    • 2022-01-23
    相关资源
    最近更新 更多