2016-03-23 47 views
2

我的路由在Angular2中不起作用,爲了證明這一點,我已經將相同的組件作爲我的站點的根目錄和/login。該組件工作在http://localhost:3000,但在http://localhost:3000/login,我只是得到一個通知「無法GET /登錄」。路由在Angular2中不起作用

app.component.ts:

import { Component } from 'angular2/core'; 
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from 'angular2/router'; 

import {TodoService} from './todo/services/todo.service'; 
import { TodoCmp } from './todo/components/todo.component'; 
import { LoginComponent } from './user/components/login.component'; 
import { UserService } from './user/services/user.service'; 


@Component({ 
    selector: 'my-app', 
    template: ` 
    <h1>{{title}}</h1> 
    <router-outlet></router-outlet> 
    `, 
    styleUrls: ['client/dev/todo/styles/todo.css'], 
    directives: [ROUTER_DIRECTIVES], 
    providers: [ 
    ROUTER_PROVIDERS, 
    TodoService 
    ] 
}) 
@RouteConfig([ 
    { 
    path: '/', 
    name: 'TodoCmp', 
    component: TodoCmp, 
    useAsDefault: true 
    }, 
    { 
    path: '/login', 
    name: 'TodoCmp', 
    component: TodoCmp 
    } 
]) 

export class AppComponent { 
    title = 'ng2do'; 
} 

這裏是我的index文件的鏈接。 我做錯了什麼?

+0

你有包括所有必要的庫文件? – sdfacre

+0

@sdfacre是的,我正在面臨與我的system.config沒有添加文件擴展名到依賴關係的問題。現在已解決,請參閱我的更新問題。 –

+0

如果一切都正確加載,爲什麼它仍然抱怨'需求沒有定義'...對不起,除非你能提供一個plunker,否則我沒有任何線索。你有沒有跟着任何例子?像http://www.waynehong.com/javascript/angular-2-routing-example-typescript/ – sdfacre

回答

0

在一個@RouteConfig(...)不能有兩個名稱相同的路線:

@RouteConfig([ 
    { 
    path: '/', 
    name: 'TodoCmp', 
    component: TodoCmp, 
    useAsDefault: true 
    }, 
    { 
    path: '/login', 
    name: 'TodoCmp', <!-- <<<== should be 'Login' instead of 'TodoCmp' 
    component: TodoCmp 
    } 
]) 

你應該移動到ROUTER_PROVIDERSbootstrap()(如HTTP_PROVIDERS

+0

我已經從'angular2/router'添加了'import {ROUTER_PROVIDERS};'然後將我的行更改爲'bootstrap (AppComponent,[HTTP_PROVIDERS,ROUTER_PROVIDERS]);'在main.ts中,但我仍然得到相同的行爲,是你的意思? –

+0

你是否也從'@Component()'中移除它? –

+0

是的,我從'app.component'中刪除它 –