ngb-carousel更改起始幻灯片

问题描述 投票:-1回答:1

我正在使用Angular 5和ngb-carousel。旋转木马在模板上有3个幻灯片,每个幻灯片都有不同的ID。我想根据传递给托管幻灯片的组件的数据设置起始幻灯片。

我遇到的问题是,如果我使用@ViewChild来获取对旋转木马的引用,它在ngOnOnit钩子上是未定义的,所以我不能在那里做任何事情。它在ngAfterViewInit钩子中“未”未定义,因此我可以调用select()函数来更改幻灯片,但后来我遇到“表达式在检查后发生了变化”。错误。总之,@ViewChildngOnInit时没有返回旋转木马,如果我改变在ngAfterViewInit期间观看的幻灯片,我得到更改错误。

是否有更好的方法根据传递给组件的数据设置ngb-carousel的起始幻灯片?

angular slide lifecycle ng-bootstrap
1个回答
0
投票

我想我有一个解决方法。鉴于@ViewChild不会及时获得ngbn-carousel对ngOnInit的引用,并且我必须在ngAfterViewInit钩子中调用select(),然后在SetTimeout调用中包装如下所示的select调用将确保当前的Javascript VM循环将在不影响视图的情况下完成,然后进行完全合法的更改。有关此链接的更多信息:

https://blog.angular-university.io/angular-2-what-is-unidirectional-data-flow-development-mode/

这里的代码有效:

ngAfterViewInit(){

    setTimeout(() => {
        this.carousel.select('3');
    });

}
© www.soinside.com 2019 - 2024. All rights reserved.