У меня есть меню навигации, в котором используется модуль прокрутки страницы ng2.Угловой 2 - Ожидание булевских истинности перед выполнением службы
Я прокручиваю страницу с помощью хэштага.
Проблема в том, что если я выполняю перекрестную маршрутизацию, данные требуют некоторого времени для загрузки, поэтому служба обычно прокручивается до моего раздела, чем все данные, а часть интереса больше не будет отображаться на экране, поэтому пользователю необходимо выполнить manully прокрутку, чтобы перейти в раздел interst. Это делает все меню бесполезным.
Поэтому я использую EventEmitter во всех разделах, чтобы установить Bools в «прокручивать» страницу, все хорошо ...
Но я не знаю, как ждать allDataLoaded
булевых повернуть так.
Я пытался использовать обещание
Это как мой код выглядит так далеко.
HTML компоненты меню навигации
<a [routerLink]="['']" [queryParams]="{ scrollTo: '#home' }">
<a [routerLink]="['']" [queryParams]="{ scrollTo: '#contact' }">
<a [routerLink]="['']" [queryParams]="{ scrollTo: '#about' }">
HTML компонент с помощью корневого сегмента
<componentOne (dataLoadedEvent)="homeLoaded = true; checkIfDataLoaded()"></componentOne>
TS из компонента с использованием корневого сегмента
homeLoaded: boolean = false;
contactLoaded: boolean = false;
aboutLoaded: boolean = false;
allDataLoaded: boolean = false;
ngOnInit() {
// other code here
this.route.queryParams.forEach((params: Params) => {
if (params['scrollTo']) {
this.checkIfDataLoaded().then(() => {
this.scrollToSection(params['scrollTo']);
});
}
});
}
checkIfDataLoaded() {
if (this.homeLoaded && this.contactLoaded && this.aboutLoaded) {
//this.allDataLoaded = true;
return new Promise((resolve, reject) => {
resolve(true);
});
}
}
Как Гюнтер Zöchbauer ответил здесь (https://stackoverflow.com/a/40126194/3264998) для другого questoin, код сломается с TypeError: Cannot read property 'then' of undefined
TL; DR Что такое правильный способ использовать обещания во время ожидания для BOOL, чтобы превратить истина/ложь?