我想在两个组件之间拥有共享状态/数据(主题组件和主题详细信息组件)。我决定使用单身注射服务(主题服务)。
行为如下: 如果用户点击表格中的一行(参见图1),则会调用 onSelect 方法(参见图2),并将其设置为主题服务所选主题(即那一排)。
主题服务使用 setSelectedTopic (参见图3)方法设置所选主题/行的数据/状态。
在 TopicDetailComponent (参见图5)中注入主题服务,当我尝试访问 ngOnInit 方法时,属性< strong> this.topicService.selectedTopic ,即使将正确的主题传递给服务,我也会得到#undefined&#39;
问题是当主题服务将 selectedTopic 传递给 TopicDetailComponent ngOnInit 时, this.topicService.selectedTopic 未定义。
有人可以帮我解决这个问题吗?
谢谢!
P.S。我是Angular 2的新手,所以请耐心等待我:)
答案 0 :(得分:2)
如果您希望Service成为单例,我认为您应该从topics.component.ts中完全删除提供程序。如果您将TopicService指定为提供者,它将创建该服务的新实例,您将失去单例行为。
答案 1 :(得分:0)
将主题信息从设置(topic component
)中提取到提取(topic-detail component
)的原因是,变量没有内存。您需要的是Subject
或BehaviourSubject
个变量。
BehaviorSubject vs Observable?