Angular 角度2-当*ngFor完成父组件上的调用函数时

Angular 角度2-当*ngFor完成父组件上的调用函数时,angular,ngfor,Angular,Ngfor,我正在尝试为Angular 2应用程序创建旋转木马组件 我希望旋转木马是通用的,因此它将支持这两种情况: 第一张牌 第二张牌 .... 而且更通用 问题是转盘组件需要在*ngFor完成后进行初始化才能运行,否则将无法正确显示 由于数据来自web服务调用,我无法猜测确切的时间,但我需要carousel组件隐式或显式地观察*ngFor何时完成。有人能帮忙吗?谢谢大家! 最后一次尝试ngFor时发生火灾事件,如下所示 <myCard *ngFor="#card in cards; #l

我正在尝试为Angular 2应用程序创建旋转木马组件

我希望旋转木马是通用的,因此它将支持这两种情况:


第一张牌
第二张牌
....
而且更通用


问题是转盘组件需要在*ngFor完成后进行初始化才能运行,否则将无法正确显示


由于数据来自web服务调用,我无法猜测确切的时间,但我需要carousel组件隐式或显式地观察*ngFor何时完成。有人能帮忙吗?谢谢大家!

最后一次尝试ngFor时发生火灾事件,如下所示

<myCard *ngFor="#card in cards;  #last=last" [card]="card" [attr.ready]="last ? false : true"></myCard>

希望这有帮助:)

您可以使用
ContentChildren

@ContentChildren(MyCardComponent)卡:QueryList;
ngOnAfterContentInit(){
这是我的名片
.变化
//.debounce(100)/*可能会增加额外的debounce时间*/
.订阅(卡片=>{
//收到新卡。。
});
}

另一个Stackoverflow答案已经解决了这个问题:

我的解决方案非常类似:一个指令(称为CarouselItem)应用于*ngFor中的carousel元素,定义一个布尔输入,告诉该元素是否是最后一个元素,以及一个属性(或eventemitter),可以设置为在到达最后一个元素时调用的函数

因此,模板变成:


变量#carousel需要能够引用myCard指令中的carousel组件([init]=“carousel.initialize”)

以下是该指令的代码:

@指令({
选择器:`[CarouselItem]`
})
导出类旋转木马{
@Input('init')onInit:Function=()=>{};
@Input()设置就绪(isReady:boolean){
如果(isReady)
setTimeout(()=>this.onInit(),200);
};
}
最后,carousel组件包含一个公共初始化方法

public初始化=()=>{
//执行初始化
};

不,我不认为这会起作用,因为我希望这些卡片是完全通用的——可以是MyCard、MyPicture或其他任何东西。否则,我最终会有一个旋转木马组件,它紧密地绑定到一种特定类型的内容。谢谢你,但你能说得更清楚一点吗?在哪个组件中定义了就绪属性?我试图在转盘组件上定义它,但似乎无法引用它。这就是我尝试的,打乱了模板编译器:)
@Input()
set ready(isReady: boolean) {
    if (isReady) someCallbackMethod();
}