【问题标题】:What kinds of changes do ViewChildren and ContentChildren QueryLists listen for?ViewChildren 和 ContentChildren QueryLists 监听哪些变化?
【发布时间】:2017-07-03 20:03:28
【问题描述】:

假设您有以下代码:

还有其他地方的代码:

哪些更改会导致调用() => {}@ContentChildren() 呢?我找不到这方面的任何文档。

此外,有没有办法获得有关所发生更改的更多信息? (例如更改的类型、发生更改的元素等)

编辑:上面“附加”部分的答案可以在标记为正确的答案的 cmets 部分中找到。

【问题讨论】:

    标签: angular reactjs typescript angular2-observables reactivex


    【解决方案1】:

    @ViewChildren@ContentChildren 都用于获取 Angular 组件列表。

    因此,如果您有一个组件 ItemComponent,则绑定将是这样的。

    @ViewChildren(ItemComponent) items: QueryList<ItemComponent>;
    

    QueryList 将是ItemComponent 类型的对象列表。

    当列表中的项目数发生变化时,查询列表中的事件会发出。添加或销毁组件。当使用*ngFor 或其他模板修饰符时,通常会发生这种情况。

    【讨论】:

    • 我可以有模板引用变量#test吗?我不明白为什么 @ViewChildren('test') 示例总是会产生一个空列表。
    • @yurzui 抱歉。你是对的。字符串选择模板# 名称,类型为ElementRef。我以为是为了代币。
    • 啊,谢谢你的回答。还有一件事:有没有办法获取有关发生的特定更改的信息?
    • @NetherGranite 不,Angular 内部的逻辑工作方式是每次模板操作更改 DOM 结构时发出更改事件。我什至不认为要弄清楚发生了什么变化。只是它确实改变了。如果我需要跟踪这个。我会迭代查询列表中的项目并用额外的数据标记它们。任何缺少该标签的都是新项目,如果标签是一个位置,那么数字中的任何跳过都表示已删除的项目。
    • @ThinkingMedia 啊,好的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多