Я загружаю карусель с веб-страницами. Я хочу получить параметр и перейти к слайду с каруселью, представляющему нужную страницу (например, глубокую ссылку). Мы все видели что-то вроде этого ... нужный элемент страницы правильно инициализирован (pageTurner), но когда я go для «selectSlide», визуальный элемент не полностью реализован, и слайд не двигается.
Чтобы исправить это, я попытался переместить свой код в ngAfterViewChecked, но потом он выполнялся каждый раз, когда я впоследствии вручную поворачивал карусель, что было бы очень плохо, но по крайней мере это работало с нагрузкой. Однако, когда я обернул этот код в булеву проверку для одноразового выполнения (if (loadComplete == false) {}), он вообще перестал работать в ngAfterViewChecked, что действительно сбивало с толку. Код выполнен, но функция больше не работает.
Мое временное решение - ждать 500 миллисекунд для вызова функции из ngOnIt, и это работает, но должен быть лучший способ дождаться визуального элемента готов и действует только один раз при загрузке ...
export class Carousel implements OnInit {
@ViewChild(CarouselComponent, {static: true}) pageTurner : CarouselComponent;
slide: any;
loadingComplete: boolean = false;
constructor(private activatedroute:ActivatedRoute) { }
ngOnInit() {
this.activatedroute.data.subscribe(data => {
if (data.slide != undefined) {
this.slide=data.slide;
setTimeout(() => this.gotoPage(this.slide), 100);
}
})
}
gotoPage(index) {
this.pageTurner.selectSlide(index);
}
}