gpt4 book ai didi

asynchronous - Angular 2 |无法使用@ContentChildren 获取子指令

转载 作者:太空狗 更新时间:2023-10-29 17:59:39 25 4
gpt4 key购买 nike

我正在尝试从父指令获取嵌套指令,但未填充 @ContentChildren。基本上我在图像上构建延迟加载,每个图像都是来自父指令的嵌套指令


示例:

parent.directive.ts:

import ...

@Directive({
'selector': 'parentSelector'
})
export class ParentDirective implements onInit, AfterContentInit {
@ContentChildren(ChildDirective) private items: QueryList<ChildDirective>;

ngOnInit(): void {}

ngAfterContentInit(): void {
console.log(this.items, this.items.toArray()); // <---

// call a child directive method...
this.items.forEach((item: ChildDirective) => {
item.makeSomething();
});
}
}

这里,this.items 没有填充

child.directive.ts:

import ...

@Directive({
selector: 'childSelector'
})
export class ChildDirective {
makeSomething(): void {
console.log('called from ParentDirective');
}
}

app.component.ts

import ...

@Component({
selector: 'app',
template: `<div>
<some-component parentSelector [items]="itemsData"></some-component>
</div>`
})
export class AppComponent {
// NOTE: "itemsData" is loaded asynchronously from a service
...
}

属性 “itemsData” 从服务异步加载

some-component.component.html

<!-- 'items' was obtained from AppComponent @Input('items')
see also: 'itemsData' on AppComponent
-->

<div *ngFor="let image of images">
<img childSelector src="image.src">
</div>

问题出在“某些组件”循环上,因为数据是异步加载的,@ContentChildren 是空的。

注意:所有图片都显示在some-component

有什么想法吗?提前致谢。

最佳答案

有一个错误(已在 2.0.1 中修复)@ContentChildren() 默认不搜索后代。您可以通过显式设置来解决

@ContentChildren(ChildDirective, {descendants: true})

在 2.0.1 中,true 是默认值。

关于asynchronous - Angular 2 |无法使用@ContentChildren 获取子指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39907137/

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