微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过重置更新 QueryList 值?

如何解决如何通过重置更新 QueryList 值?

阅读有关 QueryList 的内容,我可以看到它是一个不可修改的列表,但它包含一个称为更改的可观察对象,我可以订阅并访问它收到的任何更改。它还有一个 reset() 函数,可以“更新查询列表的存储值”。

就我而言,QueryList 是 @ViewChildren 指令的结果,该指令查询页面上的一组视图。我对它的工作原理的猜测是,当 angular 将所有内容绘制到屏幕上时,QueryList 会触发,并且我们会得到一些相关视图的列表。如果我然后运行:

myQueryList.toArray();

然后我可以访问这些视图。但是现在让我们考虑一个新的视图(我们称之为 newView)被添加到屏幕上。如果我此时访问 queryList,它应该不会改变。但是如果我订阅了 queryList.changes,那么我会收到一个包含所有旧视图和新视图的新视图列表。

如果我想让 myQueryList.toArray() 反映这些更改,我将不得不执行以下操作:

myQueryList.changes.subscribe((changes) => {
    //"changes" should be a list/array of all the old views plus newView
    myQueryList.reset(changes)

    //The result of this call will contain all of old views,and newView
    myQueryList.toArray();
});
  1. myQueryList.changes 的结果是包含屏幕上与 ViewChildren 查询相关的所有视图,还是仅包含最初不存在的新视图?
  2. 在上面的 manor 中使用 reset 是更新 myQueryList 内容的正确方法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。