如何解决为什么组件无法从服务接收数据
我想通过服务将数据从一个组件发送到另一个组件,并遵循此answer。问题是,接收器组件从不接收数据。我还尝试了该question的解决方案。我另一个为什么会出错的想法是,我以错误的顺序调用了重要的“命令”。据我了解,使用Observables时有一个特定的顺序。
- 创建可观察的->私有dataSubject = new Subject();
- 可观察到的呼叫-> subscription();
- 执行Observable-> next();
- 处置-> unsibscribe();
我希望有人可以弄清楚我对观察性观察是否有错误的理解,或者仅仅是错误。 谢谢!
解决方法
您的解决方案中有几个错误。
- 首先,请务必小心,取消销毁可观察到的非HTTP消息。
- 当您想将值推入主题时,应在
next()
内提供该值。 - 请注意,在创建第一个订阅后,您将始终跟踪名称,并且在每次提交后,新值都会出现在屏幕上
- (对于Cleaner Code是可选的),当一个函数有副作用时,它不应返回值(与命令分开的查询)。
我从您的栈闪电here创建了一个有效的示例。
,根据我在stackblitz示例中发现的内容,您在上述问题的第三部分中遇到了问题。
3。执行Observable-> next();
您没有执行将可观察值传递给Observable所需的全部操作
您在服务中正在做什么(以stackblitz代码示例为例)
sendName(name) {
this.nameSubject.next(); // executing empty observable
return name; // no need of this if you are setting value in observable
}
你应该做什么
sendName(name) {
// notice passing name to observable to execute rather returning
this.nameSubject.next(name);
}
在您的stackblitz示例中对此进行更新,它现在应该可以正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。