Ng-zorro-antd: nz-list给nzDataSource赋新值后不刷新,只有鼠标点击一下结果才出现

Created on 12 Jul 2018  ·  13Comments  ·  Source: NG-ZORRO/ng-zorro-antd

Version

1.1.1

Environment

chrome68 win10

Reproduction link

https://stackblitz.com/edit/ng-zorro-antd-start-t5fr4t

Steps to reproduce

1、搜索框输入1,点击搜索
2、结果栏没有结果,点击一下鼠标才出现

What is expected?

搜索完之后立即出现结果

What is actually happening?

没有结果出现

Other?

可能跟nz-list的changeDetection是OnPush有关,应该怎么做才能确保会更新界面

Bug

All 13 comments

你应该提供一个新的数组,而不是在原数组上进行更改或增删。

每次搜索都是新值
image

@HsuanXyz 大佬,指导一下

@MagicWang 我也遇到这个问题了 请问大佬怎么解决的

列表上绑定的数据是list:
<nz-list [nzDataSource]="list"
当有变化的时候就重新给list一个新的数组,可以这样写:
this.list = [...this.list, new_item];
这样就起作用了。
为啥要提供一个新数组。。。。。心累💔

我还是没有解决,每次都是new的新数组,也不起作用

nzList 是OnPush的

仔细看angular的官网文档 https://www.angular.cn/guide/lifecycle-hooks#emonchangesem

当 power 属性的字符串值变化时,相应的日志就出现了。 但是 ngOnChanges 并没有捕捉到 hero.name 的变化。 这是第一个意外。

Angular 只会在输入属性的值变化时调用这个钩子。 而 hero 属性的值是一个到英雄对象的引用。 Angular 不会关注这个英雄对象的 name 属性的变化。 这个英雄对象的引用没有发生变化,于是从 Angular 的视角看来,也就没有什么需要报告的变化了。

edited:

这个issue提出的问题和以上解释无关,由cdkObserveContent问题引出

@vthinkxie ,大神,这个知道的,所以每次都是赋的新值
请看链接地址https://stackblitz.com/edit/ng-zorro-antd-start-t5fr4t
搜索框输入1,按enter键,无结果出现,鼠标点击一下结果就出现了

@cipchk 看一下keydown的情况下OnPush应该没有触发

@vthinkxie 明白了

@cipchk 怀疑在OnPush情况下 spin 上的 cdkObserveContent 没法很好的工作,你再check一下

@MagicWang 抱歉之前归类错误,可以用这个方式
https://stackblitz.com/edit/ng-zorro-antd-start-ps24u1?file=src%2Fapp%2Fapp.component.ts
暂时规避掉这个bug

Was this page helpful?
0 / 5 - 0 ratings