我在<app-root> HERE </app-root>标签之间的 Angular 应用程序中添加了一些加载动画。
我需要延迟开始显示并检查此动画。我知道 JS setTimeout(),但可能把它放在哪里?
我在<app-root> HERE </app-root>标签之间的 Angular 应用程序中添加了一些加载动画。
我需要延迟开始显示并检查此动画。我知道 JS setTimeout(),但可能把它放在哪里?
几天前,我在我的项目中应用了一个加载器。这是我实现它的方法。
步骤1
在 main.module.ts 文件中导入您的加载器并将其添加到您的导入数组中。我用过NgxSpinner。它非常简单,并带有一些非常好的加载器。
//Importing Loader
import { NgxSpinnerModule } from 'ngx-spinner';
第2步
在要使用它的组件的 .ts 文件中再次导入该模块,并在 constructor() 中对其进行初始化。
第 3 步
在订阅 observable 之前添加一个show()类,然后添加一个setTimeout()函数以在给定时间内隐藏微调器/加载器。
这是我项目的片段。
ngOnInit() {
console.log("ngOnInit called");
// getting the name of the book from the route
let myBookName = this._route.snapshot.paramMap.get('name');
console.log(myBookName);
this.spinner.show();
this.bookHttpService.getSingleBookInfo(myBookName).subscribe(
data => {
console.log(data);
this.currentBook = data;
},
error => {
console.log("some error occured");
console.log(error.errorMessage);
}
)
setTimeout(() => {
this.spinner.hide();
}, 2000);
}
请记住,您还必须延迟响应以达到平稳的效果。
更新
此外,将加载程序放在该特定视图的模板文件的顶部。
将您的加载器组织为纯 html/css 并将其放入<app-root> HERE </app-root>. 这将是向用户弹出的第一件事。当应用程序完成初始化时,它将应用程序根目录的内容替换为应用程序根组件(有效地删除您的预加载器)
我认为使用APP_INITIALIZER是延迟应用程序启动的正确方法。
通过使用返回执行函数的 lambdaAPP_INITIALIZER初始化属性,您可以轻松添加延迟。为此,您应该将. 下面的示例创建 5 秒的延迟。useValuepromisesetTimeout()APP_INITIALIZERproviders@NgModule
import { APP_INITIALIZER } from '@angular/core';
@NgModule({
providers: [
{
provide: APP_INITIALIZER,
useValue: () => new Promise(resolve =>
setTimeout(resolve, 5000)
),
multi: true
}
]
})
这将导致<app-root></app-root>显示 5 秒之间的内容。