я макет с [hidden]
:Угловая 2.0.0 [скрыт] не работает в некоторых случаях
<main id="content" class="content view-animate fade-up" role="main">
<div [hidden]="!preloader.isLoading">
<img class="absolute-center" src="/assets/img/cube.svg" alt="Loading..."/>
</div>
<div [hidden]="preloader.isLoading">
<router-outlet></router-outlet>
</div>
</main>
Я услуг справиться с этим:
export class PreloaderService {
private _isLoading: boolean = false;
constructor(router:Router) {
router.events.subscribe((event) => {
console.log('event',event);
if(event instanceof NavigationStart) {
this._isLoading = true;
}
if(event instanceof NavigationCancel || event instanceof NavigationError || event instanceof NavigationEnd) {
this._isLoading = false;
}
});
}
get isLoading() {
return this._isLoading;
}
}
Проблема: когда я При входе в систему с учетной записью Facebook я вижу загрузчик, а затем мою целевую страницу. Если я выйду из системы сразу после этого и снова войдите в систему с FB, событие NavigationEnd
, значение preloader.isLoading
изменено на false
, но загрузка изображения все еще видна. Если я нажму что-нибудь (например, в меню возле области страницы) - страница стала видимой, а загрузчик исчез. Если я перезагружаю страницу после выхода из системы, загрузка страницы будет обработана в обычном режиме.
получение ошибки 'no provider for ChangeDetectorRef', но он отлично работает с' ApplicationRef' и 'tick()'. Но как этого избежать? Это связано с обратными вызовами FB? – Ivan
Извините, не заметил, что это работает. 'ChangeDetectorRef' доступен только в компонентах. –
Если 'router.navigate (...)' вызывается из кода, который выполняется вне зоны углов, это может вызвать странное поведение. Я предлагаю вам попытаться выяснить, где это происходит, и переместить выполнение обратно в зону углов, используя 'zone.run (...)'. –