2016-08-06 15 views
1

umgehen Ich versuche, einfache Router-basierte Anwendung in Angular2 mit Typoskript zu erstellen. Meine Angular2 Version ist 2.0.0-rc.4 und Router-Version ist 3.0.0-beta.1Wie vorkompilieren Array-Warnung mit einfachen Router in angular2

Meine Routen Konfiguration folgt-

App.routes.ts

import { provideRouter, RouterConfig } from '@angular/router'; 
import { PageNotFoundComponent } from './Shared/pageNotFound.component'; 
import { Page1Component } from './Pages/Page1/page1.component'; 
import { Page2Component } from './Pages/Page2/page2.component'; 

const routes: RouterConfig = [ 

    { path: 'page1', component: Page1Component }, 
    { path: 'page2', component: Page2Component }, 
    { path: '**', component: PageNotFoundComponent } 
]; 

export const appRouterProviders = [ 
    provideRouter(routes) 
]; 

Während Anwendung ausgeführt npm Startbefehl ich eine Warnung erhält (nicht Fehler) . Bitte beachten Sie diese screen shot for warning

Wie überwinde ich diese Warnung?

Antwort

0

Versuchen unter der Linie in der Haupt AppComponent-

precompile: [Page1Component, Page2Component .... ] 

sehen, ob das hilft hinzufügen.

+0

Danke! Das Hinzufügen der Precompile-Zeile verschwindet, aber beim ersten Laden der Anwendung sehe ich immer die PageNotFound-Komponente. Fehle ich irgendeine Konfiguration? – Adi99

+0

Sie können die Standardroute wie folgt einstellen: '{path: '', redirectTo: '/ page1', pathMatch: 'full'}' Dies lädt standardmäßig Ihre Seite1. – Sanket

+0

Danke nochmal! Standardroute funktioniert für mich. – Adi99

0

Dies scheint eine Lücke in der Angular 2 Router-Dokumentation zu sein. Hoffentlich wird es bald nachholen. In der Zwischenzeit, wie in this answer beschrieben, fügt die neueste Version von Angular 2 dem @Component Dekorateur eine precompile Option hinzu. Fügen Sie dies gemäß der Aufforderung der Warnung Ihrer App-Komponente hinzu.

@Component({ 
    selector: 'my-root-app-component', 
    template: '...', 
    precompile: [PageNotFoundComponent, PlusWhateverElseThrowsAWarning, Etc] 
}) 

Angular 2 hat immer vorkompilierte Komponenten (es ist, was es so magisch sein kann!), Aber mit dem neuen Router es ist erforderlich, dass Sie angeben, welche Komponenten vorkompilierte werden sollen. Vermutlich geschieht dies, um die Leistung zu optimieren und sicherzustellen, dass nur Komponenten, die unbedingt benötigt werden, beim Start vorkompiliert werden.

+0

Danke! Das Hinzufügen der Precompile-Zeile verschwindet, aber beim ersten Laden der Anwendung sehe ich immer die PageNotFound-Komponente. Fehle ich irgendeine Konfiguration? – Adi99