Angular: 当路由器为 activated/change 时显示预加载器
Angular: Show preloader when Router is activated/change
我想在 router-outlet
加载组件时创建一个预加载器。
我想要的是预加载器将首先显示并覆盖 router-outlet
然后在延迟(1s)后预加载器将被隐藏并显示 router-outlet
.
预加载器的要点是在加载其内容时隐藏 router-outlet
,如图像预加载器将显示,并在延迟后加载 images/contents
。
到目前为止,我所做的是使用 router-outlet
及其事件 activate
<div *ngIf="preLoader" class="loader">
<h2>LOADER</h2>
</div>
<router-outlet (activate)="onActivate($event)"></router-outlet>
preLoader: boolean;
onActivate(event : any) {
this.preLoader = true;
console.log(this.preLoader);
setTimeout(()=>{
this.preLoader = false;
},1000);
}
有没有更好的解决办法?
您可以使用 class 将 "display: hidden" 应用到路由器出口,同时预加载器值为 true,这会将其隐藏在页面中。
<div [class.hide-me]="!preLoader" class="loader">
...content to show whilst loading...
</div>
<router-outlet
[class.hide-me]="preLoader"
(activate)="onActivate($event)">
</router-outlet>
我想在 router-outlet
加载组件时创建一个预加载器。
我想要的是预加载器将首先显示并覆盖 router-outlet
然后在延迟(1s)后预加载器将被隐藏并显示 router-outlet
.
预加载器的要点是在加载其内容时隐藏 router-outlet
,如图像预加载器将显示,并在延迟后加载 images/contents
。
到目前为止,我所做的是使用 router-outlet
及其事件 activate
<div *ngIf="preLoader" class="loader">
<h2>LOADER</h2>
</div>
<router-outlet (activate)="onActivate($event)"></router-outlet>
preLoader: boolean;
onActivate(event : any) {
this.preLoader = true;
console.log(this.preLoader);
setTimeout(()=>{
this.preLoader = false;
},1000);
}
有没有更好的解决办法?
您可以使用 class 将 "display: hidden" 应用到路由器出口,同时预加载器值为 true,这会将其隐藏在页面中。
<div [class.hide-me]="!preLoader" class="loader">
...content to show whilst loading...
</div>
<router-outlet
[class.hide-me]="preLoader"
(activate)="onActivate($event)">
</router-outlet>