Как использовать 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],
Другие вопросы по тегам