gpt4 book ai didi

angular - 如何从 Angular 2 中的 QueryList 获取子元素?

转载 作者:太空狗 更新时间:2023-10-29 16:57:22 25 4
gpt4 key购买 nike

我是 Angular2 的新手。在我看来,我几乎没有在 *ngFor 中生成相同的 child 。

<ngb-panel *ngFor="let client of clients" [title]="'Client #' + client.id">
<template ngbPanelContent>
<processing-item [client]="client"></processing-item>
</template>
</ngb-panel>

我需要在父元素上调用这些组件的方法并找到 ViewChildren 装饰器,代码是:

@ViewChildren(ProcessingItemComponent) processingItems: QueryList<ProcessingItemComponent>;

然后我尝试通过 forEach 迭代它们:

ngAfterViewInit() {
this.processingItems.forEach(function (el) {
console.log(el);
});
}

但它什么都不做。在 QueryList 上调用的 toArray() 方法返回空数组。

关于如何一次获取所有子组件并调用其方法有什么建议吗?

最佳答案

如果 clients 是从异步调用(例如对服务器)设置的,那么这些元素还不存在于 ngAfterViewInit() 中。

你可以使用

ngAfterViewInit() {
this.processingItems.changes.subscribe(() => {
this.processingItems.toArray().forEach(el => {
console.log(el);
});
});
}

另见 https://angular.io/api/core/QueryList#changes

关于angular - 如何从 Angular 2 中的 QueryList 获取子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com