我有一个父组件,它使用ajax请求检索对象array.

该组件有两个子组件:一个以树 struct 显示对象,另一个以表格格式呈现其内容.父 node 通过@input属性将数组传递给子 node ,子 node 可以正确显示内容.一切如期而至.

当您更改对象中的某些字段时,就会出现问题:这些更改不会通知子组件.只有手动将数组重新分配给其变量时,才会触发更改.

我已经习惯了使用击倒JS,我需要得到一个类似于耳环的效果.

我不知道多切克是怎么做的.

推荐答案

OnChanges Lifecycle Hook将仅在输入属性的实例更改时触发.

如果要判断输入数组中的元素是否已被添加、移动或移除,可以在DoCheck Lifecycle钩子中使用IterableDiffers,如下所示:

constructor(private iterableDiffers: IterableDiffers) {
    this.iterableDiffer = iterableDiffers.find([]).create(null);
}

ngDoCheck() {
    let changes = this.iterableDiffer.diff(this.inputArray);
    if (changes) {
        console.log('Changes detected!');
    }
}

如果需要检测数组中对象的变化,则需要遍历所有元素,并对每个元素应用KeyValueDiffers.(您可以与之前的判断同时进行).

更多信息请访问此帖子:Detect changes in objects inside array in Angular2

Typescript相关问答推荐

如何将函数类型应用到生成器?

如何根据参数的值缩小函数内的签名范围?

Typescript:将内部函数参数推断为子对象键的类型

Angular 17 Select 错误core.mjs:6531错误错误:NG 05105:发现意外合成监听器@transformPanel.done

需要使用相同组件重新加载路由变更数据—React TSX

为什么typescript要把这个空合并转换成三元?

有没有一种方法可以在保持类型的可选状态的同时更改类型?

在NextJS中获得Spotify Oauth,但不工作'

material 表不渲染任何数据

如何在Typescript 中输入两个相互关联的变量?

编剧错误:正在等待Expect(Locator).toBeVisible()

接口重载方法顺序重要吗?

如何编写在返回函数上分配了属性的类型安全泛型闭包

找不到财产的标准方式?

在类型脚本中将泛型字符串数组转换为字符串字母并集

如何正确地将元组表格输入到对象数组实用函数(如ZIP)中,避免在TypeScrip 5.2.2中合并所有值

Svelte+EsBuild+Deno-未捕获类型错误:无法读取未定义的属性(读取';$$';)

Karma Angular Unit测试如何创建未解析的promise并在单个测试中解决它,以判断当时的代码是否只在解决后运行

传入类型参数<;T>;变容函数

如何使用 runInInjectionContext 中的参数测试功能性路由防护