5

次の 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

エクスポートされたconstの中に入れてみました:

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"

4

2 に答える 2

2

angularをバージョン2.3.1に戻すことでこれを解決しました。2.4.0 リリースでは壊れているようです。

于 2017-01-05T08:18:52.867 に答える
1

あなたのコードが BrowserModule も CommonModule もインポートしないのはなぜですか? これを試しましたか?

@NgModule( { imports: [BrowserModule, ApplicationsModule, RouterModule.forRoot( [ { path: '', component: ApplicationlistComponent }]) ], declarations: [ApplicationlistComponent], bootstrap: [ApplicationlistComponent] } ) export class AppRoutingModule { } もう 1 つの方法は、ルーターのコードを app.routing.ts などの別のファイルに入れることです。

const routes: Routes = path: '',
    component: ApplicationlistComponent

export const routing = RouterModule.forRoot(routes);

そして@NgModuleで:

@NgModule( {
  imports: [BrowserModule, ApplicationsModule, 
           routing
],
  declarations: [ApplicationlistComponent],
于 2017-01-04T12:56:25.217 に答える