Angular 组件怎么检测Input为引用类型的变化 ?
Angular 组件 和 外界通信最基本的方式有2种,外界出入组件,使用Input 属性,组件传出数据,使用Output属性。Input 的属性的变化可以在ngOnChanges 钩子函数中检测到,但是如果Input属性的类型不是原始类型,如数组,数组的单个成员变化,如使用Array.splice/push 等方法改变了输入属性,改怎么监听呢?
监听 Array成员的改变
一般数组成员的改变是由一些常用的方法push splice pop, [index] = 操作引起 ,怎么监听这些操作导致数组的改变呢? 利用Angular 内置变检类IterableDiffers 来实现
实现步骤:
2. 创建一个IterableDiffer实例
3. 检测变化
trackByFn
如果想监听第三级,也就是数组对象的属性的变化,以上步骤还需要调整,create 方法转入trackByFn
测试实例代码
app-shop
app-product-list