ngOnChanges事件不触发,求解
一个子组件接受一个list数组对象进行渲染,
<child [list]="list"></child>
数组对象是父组件通过http接口异步获取,然后在回调函数里面用list一个一个push进去像这样:
temArr.forEach(res => {
http.getData().then(obj => {
list.push(obj.data);
})
})
然后我在子组件的ngOnChanges事件里面打印传过来的list是空的数组对象而且只打印了一次
ngOnChangee(changes: SimpleChanges) {
for(let prorName in changes) {
if(propName === 'list') {
console.log(list) // []
}
}
}
后来我换了一种组装list的方法就正常了
temArr.forEach(res => {
http.getData().then(obj => {
list = [...list, obj.data];
})
})
这种方法感觉和push的效果是一样的, 但是在ngOnChange里面的表现不一样,查了下资料好像也没看到很合理的解释,希望哪位大佬能解释一下,感谢!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对象引用问题吧
下边写法, 相当于重定义了一个变量
引用地址改变了呀
https://angular.cn/guide/life...
把这一小节看完就好。有解释。
Angular 的变更检测只会检测对象标识,而不会检测对象内容,像数组在执行
push
、pop
等操作时,只会变更数组内容,这也就是为什么你需要使用:才会生效的原因,因为这种方式会改变对象标识(或叫指针)。同理,当你希望删除时,应该: