如何解决在哪里放置Angular PWA更新服务?
我有一个正在运行的PWA应用程序,想要整理一下application.component。 因此,我创建了这个独立的服务来监视PWA更新并通知用户:
import { Injectable } from '@angular/core';
import { MatSnackBar } from "@angular/material/snack-bar";
import { SwUpdate } from "@angular/service-worker";
import { environment } from '../environments/environment';
import { interval } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class PwaUpdatesService {
constructor(
private _snackBar: MatSnackBar,private _swUpdate: SwUpdate,) {
if (environment.production) {
this.setupUpdates();
}
}
setupUpdates() {
this._swUpdate.available.subscribe(u => {
this._swUpdate.activateUpdate().then(e => {
this._snackBar.open("There is an update","reload app",{ duration: 99999 }).onAction().subscribe(
() => location.reload()
);
});
});
const everySixHours$ = interval(6 * 60 * 60 * 1000);
everySixHours$.subscribe(() => this._swUpdate.checkForUpdate());
}
}
我的问题是,我应该在哪里“调用”该服务,以便它可以在应用启动时创建并运行? 我试图将其放入app.module提供程序的部分,但不会创建。
我可以在app.component中再次导入服务,但是我想整理一下。那么我应该在哪里放置自动运行服务?
[更新] 我试图将其导入到我的app.component中,但通知不会触发。调用它们后,服务似乎会被销毁吗?
constructor(
private pwaUpdatesService: PwaUpdatesService,) {
pwaUpdatesService.setupUpdates();
}
解决方法
您可以在app.component.ts
内调用它,它在大多数情况下是根组件
constructor(private readonly _pwaService: PwaUpdatesService){
this._pwaService.setupUpdates();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。