2016-08-11 2 views
9

Nach Winkel 2 bis RC5 Upgrade, ich war Warnungen wie ich immer unten gefragt meine Komponenten zu bewegen, Erklärungen Modul:RC5 NgModules Erklärungen

NgModule AppModule verwendet AcademylistComponent über „entryComponents“ aber es wurde weder erklärt noch importiert! Diese Warnung wird nach dem letzten Fehler zu einem Fehler.

Ich verweise auf diese Komponenten in meiner Router-Konfigurationsdatei. Was sah wie folgt aus:

import {provideRouter,RouterConfig} from '@angular/router'; 
import {AcademylistComponent} from '../modules/home/component/academyList.component'; 
import {CourselistComponent} from '../modules/home/component/courseList.component'; 
import {CreateacademyComponent} from '../modules/home/component/createAcademy.component'; 
import {ReportsComponent} from '../modules/home/component/reports.component'; 
import {AuthenticatedGuard} from '../guards/authenticated.guard'; 

export const routes: RouterConfig = [ 
{ 
    path: '', 
    redirectTo:'/home', 
    terminal:true}, 
{ 
    path: 'home', 
    canActivate: [AuthenticatedGuard], 
    children: [ 

     {path: '', component: AcademylistComponent}, 
     {path: 'my-academies', component: AcademylistComponent}, 
     {path: 'my-courses', component: CourselistComponent}, 
     {path: 'create-academy', component: CreateacademyComponent}, 
     {path: 'reports', component: ReportsComponent} 

    ] 

} 

]; 

export const APP_ROUTER_PROVIDERS = [ 
provideRouter(routes) 
]; 

Wenn ich die Komponenten bewegt declarations Arrays Modul ng und importiert es ihnen, die Routen Config-Datei gestartet haben gibt mir Cannot find name Fehler.

Also wie verwende ich Moduldeklarationen in diesem Fall?

+0

können Sie uns den aktuellen Code (NgModule) zeigen? –

Antwort

10

Auch wenn Sie sie in Ihren Routen deklarieren, müssen Sie noch die Komponenten deklarieren, die in den Routen im NgModule verwendet werden.

@NgModule({ 
    declarations: [ 
    AcademylistComponent, 
    //.. and so on 
    ], 
    providers: [ 
    APP_ROUTER_PROVIDERS 
    ] 
}) 
export class AppModule {} 
+0

Nach https://angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html: "Für RC5 können Sie Ihre Komponenten, Direktiven und Pipes in den Eigenschaften der Direktiven und Pipes Ihrer @Component lassen metadata ... Diese Option ist aus Gründen der Abwärtskompatibilität nur temporär und wird in der finalen Version von Angular 2.0 entfernt. Holen Sie sich das Spiel und beginnen Sie so schnell wie möglich mit den Komponentenanweisungen und Pipes in Moduldeklarationen. – TrumanCode

+0

Eine kurze Frage. Wenn ich eine Komponente/directive/pipe aus dem Array providers/dirrictions einer Komponente entferne und sie zum Array des Providers ngModule hinzufüge, muss ich dann noch die Komponente/pipe/directive in der Komponente importieren? Ich bekomme Fehler, ohne dies zu tun. Ist das richtig? – xmaestro

+0

@TrumanCode Der Link, auf den Sie verweisen, fordert uns außerdem auf, dies für app.component zu tun. Ich nehme an, wir müssen das gleiche für alle Komponenten in der App tun? – xmaestro