我有服务:
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文档提出了一些方法,其中一种方法是使用服务进行通信并订阅服务的可观察对象
我的问题是。 仅使用服务变量而不是服务订阅者来交换组件是一种好习惯吗?
答案 0 :(得分:1)
并不是选择Observable
或Subject
(然后订阅它们)中的任何一个,而不是使用普通变量。
当您通过预先订阅服务而从服务中获得一些价值时,观察到您期望该价值会随着时间的推移或通过某些操作而改变,然后您将被注意到。 这是一种更好的方法,而不是例如通过手动方式检入组件。 10秒或点击按钮后。