2016-03-23 6 views
2

Моя маршрутизация не работает в Angular2, чтобы продемонстрировать точку, я поставил тот же компонент, что и место назначения для корня моего сайта, и /login. Компонент работает на http://localhost:3000, но в http://localhost:3000/login я просто получаю уведомление «Can not GET/login».Маршрутизация не работает в 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

если все правильно загружено, почему он все еще жалуется, что «требование не определено» ... извините, у меня нет никакой подсказки, если вы не можете предоставить плункер. Вы следовали примеру? например 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_PROVIDERS к bootstrap() (как HTTP_PROVIDERS)

+0

Я добавил 'import {ROUTER_PROVIDERS} из 'angular2/router';', а затем изменил мою строку на 'bootstrap (AppComponent, [HTTP_PROVIDERS, ROUTER_PROVIDERS]); 'в main.ts, но я все равно получаю такое же поведение, это то, что вы хотели сделать? –

+0

Вы также удалили его из '@Component()'? –

+0

Да, я удалил его из 'app.component' –