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

时间:2017-10-23 20:39:58

标签: angular dependency-injection angular2-template angular2-services

我想在两个组件之间拥有共享状态/数据(主题组件和主题详细信息组件)。我决定使用单身注射服务(主题服务)。

行为如下: 如果用户点击表格中的一行(参见图1),则会调用 onSelect 方法(参见图2),并将其设置为主题服务所选主题(即那一排)。

主题服务使用 setSelectedTopic (参见图3)方法设置所选主题/行的数据/状态。

TopicDetailComponent (参见图5)中注入主题服务,当我尝试访问 ngOnInit 方法时,属性< strong> this.topicService.selectedTopic ,即使将正确的主题传递给服务,我也会得到#undefined&#39;

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

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

谢谢!

P.S。我是Angular 2的新手,所以请耐心等待我:)

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

将主题信息从设置(topic component)中提取到提取(topic-detail component)的原因是,变量没有内存。您需要的是SubjectBehaviourSubject个变量。 BehaviorSubject vs Observable?