繁体   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