发布网友 发布时间:2023-03-17 13:51
共1个回答
热心网友 时间:2023-11-03 17:42
ngOnChanges是Angular的生命周期钩子, 当数据绑定输入属性的值发生变化时调用。
ngOnChanges()方法获取了一个对象,它可以同时观测1个/多个绑定的属性值,它把每个发生变化的属性名都映射到了一个SimpleChange对象, 该对象中有属性的当前值和前一个值。
假如数据绑定输入属性绑定的数据为一个数组时,数组内容发生改变ngOnChanges是无法监听到的,在这种情况下具体有如下几种解决方案。
1.假如绑定的数组长度每次都发生变化,可以监听数组长度变化从而执行ngOnChanges中的函数。
(坏处:假如数组长度不变,其中某项内容改变无法检测。
2.可以将数组包为一个对象,增加一个key值。(实测无效,即使包成对象依然无法检测到其value中的数组数据改变)
3.将数组包为一个对象,并增加一个key: index,在index中传一个随机数/当前时间戳。(好处在于每次都能触发ngOnChanges,坏处在于这么做可能会消耗性能)
以上三种方法为ngOnChanges无法检测数组内容修改时具体的解决方案,个人比较青睐第三种,毕竟触发比较稳定 o