我的Angular 2應用程序具有註銷功能。如果可以的話,我們希望避免重新加載頁面(即document.location.href = '/';
),但註銷過程需要重置應用程序,以便在其他用戶登錄時沒有來自上一個會話的殘留數據。重置Angular 2應用程序
這裏是我們的main.ts文件:
import 'es6-shim/es6-shim';
import './polyfills';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { ComponentRef, enableProdMode } from '@angular/core';
import { environment } from '@environment';
import { AppModule } from './app/app.module';
if (environment.production === true) {
enableProdMode();
}
const init =() => {
platformBrowserDynamic().bootstrapModule(AppModule)
.then(() => (<any>window).appBootstrap && (<any>window).appBootstrap())
.catch(err => console.error(err));
};
init();
platformBrowserDynamic().onDestroy(() => {
init();
});
你可以看到,我試圖調用init()方法時,該應用程序被破壞。在我們的用戶authentication.service啓動註銷方法破壞:
logout() {
this.destroyAuthToken();
this.setLoggedIn(false);
this.navigateToLogin()
.then(() => {
platformBrowserDynamic().destroy();
});
}
這提供了以下錯誤:
The selector "app-root" did not match any elements
任何幫助表示讚賞。
我想當你打電話給platformBrowserDynamic()時,你會得到一個新的平臺。您可能需要在第一次調用它時存儲引用,然後在該函數上調用destroy()。 – mcgraphix