单例服务 - 其属性在多个组件中的不同值

Singleton service - different values for its attributes in multiple components

我想在两个组件(主题组件和主题详细信息组件)之间共享 state/data。为此,我决定使用单例注入table 服务(主题服务)。

行为如下: 如果用户单击 table 中的一行(参见图 1),将调用 onSelect 方法(参见图 2),并将其设置为 topic service 所选主题(即那一行)。

主题服务使用setSelectedTopic方法(见图3)为选择的[=72=设置data/state ].

TopicDetailComponent(见图5)中注入了主题服务,当我尝试访问 ngOnInit 方法,属性 this.topicService.selectedTopic,我得到 'undefined',即使正确的主题已传递给服务。

所以问题是当主题服务selectedTopic传递给TopicDetailComponent ngOnInit时, this.topicService.selectedTopic 未定义。

有人可以帮我解决这个问题吗?

谢谢!

P.S。我是 Angular 2 的新手,所以请多多包涵 :)

之所以从setting(topic component)到fetching(topic-detail component)丢失了topic信息,变量没有内存。您需要的是 SubjectBehaviourSubject 变量。

如果您希望该服务成为单例,我认为您应该从 topics.component.ts 中完全删除提供程序。如果您将 TopicService 指定为提供者,它将创建一个新的服务实例,您将失去单例行为。