2017-06-24 30 views
0

我試圖實現角度,但得到錯誤的路由屬性「forRoot」
Cannot read property 'forRoot' of undefined
我app.routes.ts文件RouterModule - 不能讀取的不確定

import { RouterModule, Routes } from '@angular/router'; 
import { LoginComponent } from '../../components/login/login.component'; 
import { SignupComponent } from '../../components/signup/signup.component'; 
import { ResourcesComponent } from '../../components/resources/resources.component'; 
import { MyApp } from './app.component'; 
const routes: Routes=[ 
    {path:'',component:MyApp}, 
    {path:'login',component:LoginComponent}, 
    {path:'signup', component:SignupComponent}, 
    {path:'resources',component:ResourcesComponent}, 
]; 
export const routing=RouterModule.forRoot(routes); 

app.module.ts文件

import { NgModule, ErrorHandler } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { MyApp } from './app.component'; 
import { LoginComponent } from '../../components/login/login.component'; 
import { SignupComponent } from '../../components/signup/signup.component'; 
import { ResourcesComponent } from '../../components/resources/resources.component'; 
import { NavbarComponent } from '../../components/navbar/navbar.component'; 
import { RouterModule, Routes } from '@angular/router'; 
import { routes } from './app.routes'; 

@NgModule({ 
    declarations:[ 
     MyApp, 
     LoginComponent, 
     SignupComponent, 
     ResourcesComponent, 
     NavbarComponent 
    ], 
    entryComponents: [MyApp], 
    imports:[BrowserModule,RouterModule.forRoot(routes)], 
    bootstrap: [MyApp] 
}) 
export class AppModule {} 

但得到誤差RouterModule和路線,即@角/路由器/索引沒有出口構件「RouterModule」和「路線」

+0

你確定錯誤是關係到app.routes.ts文件? MyApp是你的主要組件嗎?如果是這樣的話,你不應該在你的路由中使用它 –

+0

你有'RouterModule.forRoot(routes)'兩次在路由文件和模塊文件中。決定使用;) – Alex

+0

這不是問題。雖然我已經從路線文件中刪除文件 –

回答

0

至於我可以在這裏看到:https://angular.io/api/router/RouterModule

您應該使用RouterModuleNgModule。所以,你的文件應該導出routes代替routing

import { Routes } from '@angular/router'; 
import { LoginComponent } from '../../components/login/login.component'; 
import { SignupComponent } from '../../components/signup/signup.component'; 
import { ResourcesComponent } from '../../components/resources/resources.component'; 
import { MyApp } from './app.component'; 
export const routes: Routes=[ 
    {path:'',component:MyApp}, 
    {path:'login',component:LoginComponent}, 
    {path:'signup', component:SignupComponent}, 
    {path:'resources',component:ResourcesComponent}, 
]; 

,然後在模塊文件:

import { NgModule } from '@angular/core'; 
import { RouterModule } from '@angular/router'; 
import { routes } from './app.routes'; 

@NgModule({ 
    imports: [RouterModule.forRoot(routes)] 
}) 
class MyNgModule {} 
+2

這不是真的,據我所知,路由器模塊的forRoot方法可以在模塊外部調用。它的靜態並返回一個新的模塊 –

+0

你是對的。 Mea culpa :) –

+0

我已經實施了我提議的方式,但同樣的錯誤依然存在。 –

0

你沒有提到採用了棱角分明的版本。我認爲你正在使用(以下)一些不贊成使用的路線。 您可以像@Maciej Soabala上面顯示的那樣使用路線。 如果你想路由導出爲一個獨立的模塊,你可以按照這個也

https://angular.io/guide/router#refactor-the-routing-configuration-into-a-routing-module

,那麼你的代碼將看起來像

import { RouterModule, Routes } from '@angular/router'; 
import { LoginComponent } from '../../components/login/login.component'; 
import { SignupComponent } from '../../components/signup/signup.component'; 
import { ResourcesComponent } from '../../components/resources/resources.component'; 
import { MyApp } from './app.component'; 
const routes: Routes=[ 
    {path:'',component:MyApp}, 
    {path:'login',component:LoginComponent}, 
    {path:'signup', component:SignupComponent}, 
    {path:'resources',component:ResourcesComponent}, 
]; 
@NgModule({ 
    imports: [ 
    RouterModule.forRoot(routes) 
    ], 
    exports: [ 
    RouterModule 
    ] 
}) 
export class routing{} 

那麼,你在其他模塊讓你可以導入路由並使用它。

-1

如果您正在使用SystemJS版本0.20或更高版本來加載模塊,使用以下設置:

System.config({ meta: { "./*": { "esModule": true } } <more settings> });