单例服务 - 其属性在多个组件中的不同值
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信息,变量没有内存。您需要的是 Subject
或 BehaviourSubject
变量。
如果您希望该服务成为单例,我认为您应该从 topics.component.ts 中完全删除提供程序。如果您将 TopicService 指定为提供者,它将创建一个新的服务实例,您将失去单例行为。
我想在两个组件(主题组件和主题详细信息组件)之间共享 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信息,变量没有内存。您需要的是 Subject
或 BehaviourSubject
变量。
如果您希望该服务成为单例,我认为您应该从 topics.component.ts 中完全删除提供程序。如果您将 TopicService 指定为提供者,它将创建一个新的服务实例,您将失去单例行为。