繁体   English   中英

为什么组件没有从服务接收数据

[英]Why does component not receive data from service

我想通过服务将数据从一个组件发送到另一个组件并遵循这个答案 问题是,接收器组件永远不会接收到数据。 我也尝试了那个问题的解决方案。 我为什么会出现问题的另一个想法是,我以错误的顺序调用了重要的“命令”。 据我了解,使用 Observables 时有一个特定的顺序。

  1. 创建 Observable --> private dataSubject = new Subject();
  2. 调用 Observable --> subscribe();
  3. 执行 Observable --> next();
  4. 处置 --> unsibscribe();

StackBlitz

我希望有人能澄清我对观察的理解是否错误,或者这只是错误。 谢谢!

您的解决方案中有几个错误。

  • 首先,始终小心取消订阅可在销毁时观察到的非 HTTP。
  • 当您想将值推送到主题时,您应该在next()中给出值。
  • 请注意,在创建第一个订阅后,您始终会跟踪名称,每次提交后,新值将出现在屏幕上
  • (对于 Cleaner Code 是可选的),当 function 有副作用时,它不应返回值(将查询与命令分开)。

我在这里从您的堆栈闪电战中创建了一个工作示例。

根据我在您的 stackblitz 示例中发现的内容,您在上述问题的第三部分中遇到了问题。

3. 执行 Observable --> next();

你没有执行你的 observable 你需要将值传递给你的 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 示例中更新它,它现在应该可以工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM