我需要从网站上删除当前运行的Angular应用程序,我试图通过删除HTML应用程序节点来实现这一点.然而,我最近发现了这样做的副作用,即一些没有删除Angular安装的回调.
那么拆除Angular 4应用程序的正确方法是什么?
我正在使用的当前方法似乎不正确:
function tryRemoveApplicationNode() {
const currentApplicationNode = document.getElementsByTagName('ngk-app')[0];
if (currentApplicationNode) {
const parent = currentApplicationNode.parentNode;
parent.removeChild(currentApplicationNode);
}
}
Run Code Online (Sandbox Code Playgroud)
首先你需要这个@angularclass/hmr包:
npm install @angularclass/hmr
Run Code Online (Sandbox Code Playgroud)
这让你的生活变得更轻松一些。
您应该在模块的调用中调用destroy您的方法,然后使用包的方法。您可以尝试将其作为函数:AppModuledisposehotcreateNewHosts@angularclass/hmrhmrBootstrap
import {createNewHosts} from '@angularclass/hmr';
import {ApplicationRef, NgModuleRef} from '@angular/core';
export const hmrBootStrap: Function = async (): Promise<void> => {
module['hot'].accept();
const ngModule: NgModuleRef<AppModule> = await bootstrap();
module['hot'].dispose(() => {
const makeVisible: () => void = createNewHosts(
ngModule.injector.get(ApplicationRef).components.map(
c => c.location.nativeElement
)
);
ngModule.destroy();
makeVisible();
});
};
Run Code Online (Sandbox Code Playgroud)
bootstrap并有一个像这样定义的普通方法:
export const bootstrap: any = (): Promise<NgModuleRef<AppModule>> => {
return platformBrowserDynamic().bootstrapModule<AppModule>(AppModule);
};
Run Code Online (Sandbox Code Playgroud)
作为(部分)main.ts你可以这样:
if (module.hot) {
hmrBootStrap();
} else {
bootstrap();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |