簡體   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