微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在哪里放置Angular PWA更新服务?

如何解决在哪里放置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 举报,一经查实,本站将立刻删除。