Я пытаюсь создать службу оболочки LoaderService
поверх Ionic4 LoadingController
.
Вот мой фрагмент кода для LoaderService
export class LoaderService {
loader: HTMLIonLoadingElement;
constructor(public loadingController: LoadingController) {
console.log('constructor called');
this.createLoader();
}
async createLoader() {
this.loader = await this.loadingController.create({
message: 'Loading',
});
console.log('loader created');
}
async showLoader() {
await this.loader.present();
}
hideLoader() {
this.loader.dismiss();
}
}
Цель: использование службы. Я хочу создать один экземпляр загрузчика в моем приложении и разрешить компонентам отображать и отключать загрузчик при выполнении вызовов API.
Проблема: когда я использую свой LoaderService
внутри моего компонента, я получаю TypeError: Cannot read property 'present' of undefined
.
Это происходит потому, что showLoader
вызывается до асинхронного создания загрузчика.
Вот код моего компонента во время вызова API и вызова загрузчика:
getTopHeadlines() {
this._loaderService.showLoader();
this._newsApiServcie.getTopHeadLines('in')
.subscribe(res => {
this.articleList = res.articles;
this._loaderService.hideLoader();
});
}
Также посмотрите на консоль браузера