Как использовать RouterModule.forRoot() в команде Angular2 compiler/cli ngc
Допустим, у меня есть следующий appRoutingModule:
export const routes: Route[] = [
{
path: '',
component: ApplicationlistComponent
}
];
@NgModule( {
imports: [ ApplicationsModule, RouterModule.forRoot( routes ) ],
exports: [ RouterModule ],
declarations: [ApplicationlistComponent]
} )
export class AppRoutingModule {
}
При компиляции с помощью команды ngc cli это выдаст следующую ошибку:
Error: Error encountered resolving symbol values statically. Calling function 'RouterModule', function calls are not supported. Consider replacing the function or lambda with a reference to an exported function, resolving symbol AppRoutingModule in C:/git/mxt-frontend/landing-page-client/src/client/app/app-routing.module.ts, resolving symbol AppRoutingModule in C:/git/mxt-frontend/landing-page-client/src/client/app/app-routing.module.ts
Я попытался поместить его в экспортированный констант:
export const routerModule = RouterModule.forRoot( routes );
Но это даст эту ошибку:
Error: Error encountered resolving symbol values statically
Какой обходной путь / исправление, чтобы заставить это работать? Как мне определить мои маршруты, если я не могу передать его в RouterModule?
Я использую версии:
"@angular/compiler": "~2.4.0",
"@angular/compiler-cli": "~2.4.0",
"@angular/platform-server": "~2.4.0",
"@angular/router": "~3.4.0"
и т.п.
2 ответа
Я решил эту проблему, вернув угол назад к версии 2.3.1. Похоже, что это сломано в версии 2.4.0..
Почему ваш код не импортирует ни BrowserModule, ни CommonModule? Вы пробовали это?
@NgModule( {
imports: [BrowserModule, ApplicationsModule,
RouterModule.forRoot( [
{
path: '',
component: ApplicationlistComponent
}])
],
declarations: [ApplicationlistComponent],
bootstrap: [ApplicationlistComponent]
} )
export class AppRoutingModule {
}
Другая вещь, которую стоит попробовать - это иметь код маршрутизатора в отдельном файле, например, app.routing.ts:
const routes: Routes = path: '',
component: ApplicationlistComponent
export const routing = RouterModule.forRoot(routes);
и в @NgModule:
@NgModule( {
imports: [BrowserModule, ApplicationsModule,
routing
],
declarations: [ApplicationlistComponent],