从父组件更改时,Angular @Input 值不会更改

RS *_*shi 1 ngonchanges angular ngzone angular-changedetection

我在单个父组件中添加了相同的子组件三次 在此输入图像描述

下面是在一个子组件上调用的更改函数,以更改selectedName其他两个子组件中的@Input字符串类型,如果我将其更改为对象,它可以正常工作。

在此输入图像描述

这就是子组件的样子 在此输入图像描述

Wil*_*der 5

您的问题似乎是价值类型与引用类型之一。

它作为对象工作的原因是对象是引用类型:当您将对象传递给组件时,您传递的是它的引用,而不是“副本”。这意味着当您改变该对象(例如在子对象中)时,任何引用该对象的组件都将“看到”更改。

对于值类型则不然。当您将字符串、数字或布尔值传递给组件时,您传递的是与源变量完全脱节的值。

您不应该在子组件内更改其兄弟姐妹和/或父母所依赖的某些内容。您应该使用服务(带有突变方法)或 @Output 将更改事件从子级向上冒泡。