Я пытаюсь реализовать приложение для веб-работников, используя platformWorkerAppDynamic
и т. Д., Но у меня возникают некоторые трудности с реализацией HMR.
Если я не вызываю appModule.destroy()
, то HMR фактически "работает"вроде как в том, что если я внесу изменения, то горячие обновления и правильная отрисовка.Однако после этого у меня осталось N запущенных веб-работников, где N - количество раз, когда он был перегружен.Так что, если я трижды выполню горячую перезагрузку, каждое нажатие кнопки будет действовать три раза.
И наоборот, если я использую обычный для HMR метод вызова appModule.destroy()
, приложение выполняет горячую перезагрузку и повторную визуализацию, как и ожидалось., но любое последующее взаимодействие с пользовательским интерфейсом (например, нажатие кнопки) приводит к ERROR TypeError: Cannot read property 'events' of null.
Например:
import '@angular/common';
import '@angular/core';
import { platformWorkerAppDynamic } from '@angular/platform-webworker-dynamic';
import { AppModule } from '../app/app.module';
import '../polyfills.ts';
if (module.hot) {
module.hot.accept();
module.hot.dispose(data => {
modulePromise.then(appModule => {
appModule.destroy();
});
});
}
const modulePromise = platformWorkerAppDynamic().bootstrapModule(AppModule);
Каким будет правильный способ перезагрузить модуль веб-работника?