2016-09-23 61 views
1

我有一個角度最終的應用程序,加載大量的路線和模塊。我開始在控制檯中出現「Zone is already loaded」錯誤,現在我得到了兩次。如何確定已裝入的區域?

我已經看過區域對象來試圖弄清楚發生了什麼,但是在不知道區域應該做什麼的情況下解密幾乎是不可能的。

Main.ts

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 
import { enableProdMode } from '@angular/core'; 

import { environment } from './app/'; 
import {AppModule} from './app/app.module'; 

enableProdMode(); 

platformBrowserDynamic().bootstrapModule(AppModule,[]); 

app.module.ts(我省略了所有進口):

@NgModule({ 

    imports: [ BrowserModule, RouterModule.forRoot(appRoutes), SharedModule.forRoot(), 
       HomeModule, DocumentsModule, AboutModule, SettingsModule, FoodModule, CalculatorModule, 
       ThemesModule ], 
    declarations: [ AppComponent ], 
    bootstrap: [ AppComponent ], 
    providers: [ appRoutingProviders ] 

}) 

export class AppModule {} 

app.component.ts

@Component({ 
    moduleId: module.id, 
    selector: 'kg-root', 
    templateUrl: 'app.component.html', 
    styleUrls: ['app.component.css'] 

}) 

export class AppComponent implements OnInit { 
    private items: MenuItem[]; 
    appPageHeaderDivStyle: {}; 
    selectedTheme: Theme; 
    errorMessage: string; 
    loggedIn: LoggedIn; 
    loggedInEmail: string = ""; 
    isLoggedIn: boolean; 

    constructor(
     private as: AppMenuService, 
     private ts: ThemeService, 
     private ss: SettingsService, 
     private ls: LoginService) { 
    } 

    ngOnInit() { 

     this.ts.getNewTheme() 
      .subscribe(
      theme => this.selectedTheme = theme, 
      error => { 
       this.errorMessage = error 
      }, 
      () => this.completeGetNewTheme() 
      ); 

     this.ts.setTheme("Pepper-Grinder"); 
     this.items = this.as.getNoLoginMenu(); 

     this.ls.getLoggedIn() 
      .subscribe(
      loggedIn => { 
       if (loggedIn.error != undefined && loggedIn.error === "" && loggedIn.email != "") { 
        this.items = this.as.getLoggedInMenu(); 

        var us = this.ss.getUserSettings(); 
        if (us != undefined && us.theme != null && us.theme != "") { 
         this.ts.setTheme(us.theme); 
        } 
       } 
       else { 
        this.items = this.as.getNoLoginMenu(); 
        this.ts.setTheme("Pepper-Grinder"); 
       } 

       this.completeLoggedIn(loggedIn.email); 
      }); 
    } 

    completeLoggedIn(email: string) { 
     this.loggedInEmail = email; 
     this.isLoggedIn = (this.loggedInEmail.length > 0); 

    } 

    completeGetNewTheme() { 
     this.appPageHeaderDivStyle = this.ts.getAppPageHeaderDivStyle(); 
    } 

回答

2

我認爲這個錯誤意味着某些給定的區域已經被加載。看起來這意味着「zone.js」已經被加載。當我切換到Angular-cli時,它已經加載了angular-cli-build.js。所以從index.html中刪除它解決了這個問題。

我發佈這個以防其他人跑過這個錯誤。

+0

我得到同樣的問題,但我知道我要重新加載zone.js.我滔滔不絕地檢查它是否加載,我不需要加載 –