Я пытаюсь настроить счетчик для отображения запросов в angular 5. До сих пор я использовал учебник, найденный здесь:
https://www.amadousall.com/angular-routing-how-to-display-a-loading-indicator-when-navigating-between-routes/
Кажетсяочень прямо вперед;установите логическое значение для оценки либо true, либо false в зависимости от события.Единственное изменение, которое мне действительно нужно было сделать для моего кода, было ngx-spinner в html вместо mat-progress-bar.Тем не менее, до сих пор я не смог заставить показывать счетчик.
Вот код для справки, хотя он в значительной степени идентичен ссылке:
import {Component} from '@angular/core';
import { NgxSpinnerService } from 'ngx-spinner';
import {Event, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router} from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
loading = false;
constructor(private router: Router, private spinner: NgxSpinnerService) {
this.router.events.subscribe((event: Event) => {
console.log('Event Occured');
switch (true) {
case event instanceof NavigationStart: {
this.loading = true;
console.log(this.loading);
break;
}
case event instanceof NavigationEnd:
case event instanceof NavigationError:
case event instanceof NavigationCancel: {
this.loading = false;
console.log(this.loading);
break;
}
default: {
break;
}
}
});
}
/*ngOnInit() {
/!** spinner starts on init *!/
this.spinner.show();
setTimeout(() => {
/!** spinner ends after 5 seconds *!/
this.spinner.hide();
}, 5000);
}
*/
}
А здесьэто app.component.html:
<ngx-spinner [hidden]="loading==false"
bdColor = "rgba(51, 51, 51, 0.8)"
size = "default"
color = "#ffee00"
type = "pacman"
>
<app-nav></app-nav>
<router-outlet [hidden]="loading==true">
</router-outlet>
Мне бы хотелось, чтобы счетчик показывал, пока loading
верно, а router-outlet
и содержимое, которое он предоставляет, скрывать,Если значение loading
ложно, счетчик будет скрыт, и будет отображаться содержимое.
До сих пор я мог только показать счетчик, когда я закомментировал все случаи, кроме NavigationStart, предотвращая изменение loading
на false.Кроме того, я смог увидеть содержимое, возвращаемое маршрутизатором-розеткой за спиннером, несмотря на скрытый тег на нем.Я смог спрятать его, поместив в div:
<div [hidden]="loading==true">
<app-nav></app-nav>
<router-outlet>
</router-outlet>
</div>
Но это все еще не решает тот факт, что когда я позволяю loading
вычислять значение false, я никогда не вижу счетчикна первом месте;он мгновенно загружает компоненты, возвращаемые через роутер-розетку.Я новичок в угловой, так что это заставляет меня взбираться на стену.Это просто случай загрузки для меня, чтобы увидеть счетчик, или что-то еще в игре?