簡體   English   中英

如何將數據發送到嵌套組件(父子(父)-子)?

[英]How to send data to nested component (parent-child(parent)-child)?

我有三個組件(C1,C2,C3)嵌套,這意味着C2在C1中被調用,而C3在C2中被調用。 我想通過屬性綁定將C1中的數據發送到C3。

在C1的模板中,我確實綁定了變量,該變量可以通過@Input在C2中接收,而在C2的模板中,我確實綁定了相同的變量(@Input),但我沒有進入C3。

僅當我將數據存儲在C2中的一個臨時變量中並在C2的模板中綁定(臨時)變量時,它才可以工作。

那么將數據存儲在臨時變量中是強制性的還是有任何解決方法?

當C1更新時,嵌套的C3組件也應更新。

出於好奇,我創建了一個簡單的stackblitz進行嘗試: https ://stackblitz.com/edit/angular-i18qg3

  • C2組件嵌套在應用程序(根)組件中。 rootProperty綁定到C2Property。
  • C3組件嵌套在C2組件中。 C2Property綁定到C3Property。

單擊“更新變量”按鈕時,它將更新rootVariable,該變量將綁定到C2,然后綁定到C3。

請檢查是否在C2或C3中將更改檢測更改為onPush。

摘自: https ://blog.angular-university.io/onpush-change-detection-how-it-works/#onpushchangedetection和直接對象可變性

發生這種情況是因為:

  • 我們直接改變了用戶對象
  • 但是OnPush通過比較組件輸入的引用來工作
  • 因為我們沒有提供對新對象的引用,而是對現有對象進行了突變,所以未觸發OnPush更改檢測器

如果我們更改changeUserName()的實現以創建一個新的用戶實例而不是對現有實例進行突變 ,那么一切都會按預期進行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM