Попытка обновить PWA: swUpdate.isEnabled имеет значение true, но не вызывает подписанный метод, даже когда ngsw-config.json изменен - PullRequest
0 голосов
/ 22 апреля 2019

Услуги / pwa.service.ts:

import { Injectable } from '@angular/core';
import { SwUpdate } from '@angular/service-worker';
import {Observable} from "rxjs/Observable";
import "rxjs/add/observable/interval";

@Injectable()
export class PwaService {
  public promptEvent: any;

  constructor(private swUpdate: SwUpdate) {
    alert('swUpdate isEnabled:' + swUpdate.isEnabled);// => alerts true
    if (swUpdate.isEnabled) {
      Observable.interval(10)
                .subscribe(() => swUpdate.checkForUpdate().then(() => alert('checking for swUpdate')));//<= Not triggered
    }
  }

  public checkForUpdates(): void {
    this.swUpdate.available.subscribe(event => this.promptUser());
  }

  private promptUser(): void {
    alert('updating to new version');//<=Not triggered either
    this.swUpdate.activateUpdate()
                .then(() => document.location.reload());
  }
}

услуги / index.ts:

providers: [
....
{ provide: SwUpdate, useClass: SwUpdate }
]

app.modules.ts:

imports: [
....
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
]
providers: [
...
PwaService,
]

app.component.ts:

import { PwaService } from './services/pwa.service'; 
....
constructor(public Pwa: PwaService) {
  this.Pwa.checkForUpdates();
}

ngsw-config.json (незначительное изменение с lazy на prefetch) для запуска обновления:

....
"installMode": "prefetch",
....
...