Angular2中的路由不起作用

Routing not working in Angular2

本文关键字:不起作用 路由 Angular2      更新时间:2023-09-26

我的路由在Angular2中不起作用,为了证明这一点,我将相同的组件作为我的站点根和/login的目的地。该组件在http://localhost:3000上工作,但在http://localhost:3000/login上,我只收到一条通知"无法获取/登录"。

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';
}

这是我的索引文件的链接。我做错了什么?

一个@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