Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
MagicWang opened this issue Jul 12, 2018 · 13 comments · Fixed by #2255
Closed
Assignees
Labels

Comments

@MagicWang
Copy link

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有关,应该怎么做才能确保会更新界面

@hsuanxyz
Copy link
Member

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

@MagicWang
Copy link
Author

每次搜索都是新值
image

@MagicWang
Copy link
Author

@hsuanxyz 大佬,指导一下

@CHEN-DONG
Copy link

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

@tony-yyj
Copy link

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

@MagicWang
Copy link
Author

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

@vthinkxie
Copy link
Member

vthinkxie commented Sep 27, 2018

nzList 是OnPush的

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

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

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

edited:

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

@MagicWang
Copy link
Author

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

@vthinkxie
Copy link
Member

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

@vthinkxie vthinkxie reopened this Sep 27, 2018
@tony-yyj
Copy link

@vthinkxie 明白了

@vthinkxie
Copy link
Member

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

@vthinkxie
Copy link
Member

angular/components#11280 追踪到这里

@cipchk cipchk self-assigned this Sep 27, 2018
@vthinkxie
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants