无法匹配任何路线

时间:2016-06-08 04:40:19

标签: angular angular2-routing

我的组件显示但是在加载页面时收到错误消息。在查看了大量资源之后,我似乎无法解决错误消息。

错误

EXCEPTION: Error: Uncaught (in promise): Cannot match any routes. Current segment: 'index.html'. Available routes: ['/login'].

main.component.ts位于index.html中,一旦页面加载,它就会显示上述错误消息。

import { Component } from '@angular/core';
import { Routes, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from '@angular/router';

import { LoginComponent } from './login/login.component';

@Component({
    selector: 'main-component',
    template: 
      ' <header>
           <h1>Budget Calculator</h1>
           <a id='login' [routerLink]="['/login']">Login</a>
           <router-outlet></router-outlet>
        </header> '
    directives: [ROUTER_DIRECTIVES],
    providers: [ROUTER_PROVIDERS]
})

@Routes([
    {path: '/login', component: LoginComponent}
])

export class MainComponent {}

login.component.ts通过main.component.ts路由,并在我点击链接时显示,尽管有错误消息。现在我将它设置为在main.component中弹出其他元素,但希望它是页面上显示的唯一组件。基本上用index.component替换index.html中的main.component,如果可能的话,而不是做一大堆样式来显示:none。

import { Component } from '@angular/core';

@Component({
    selector: 'login',
    template: 
        ' <div id="login-pop-up">
              <h6 class="header_title">Login</h6>
              <div class="login-body">
                   Some fancy login stuff goes here
              </div>
          </div> '
})

export class LoginComponent {}

5 个答案:

答案 0 :(得分:17)

同时确保您在<base href="/">代码的开头有一个 <head> 标记,或由boostrap(...)提供Angular 2 router no base href set

提示@angular/router路由器也被弃用为@angular/router-deprecated,新的路由器将再次发货: - /如果您要切换到{{1}可能最好推迟到新的,希望最终的路由器可用。

答案 1 :(得分:1)

当我遇到这个问题时,我通常会添加

<base href="./"> 

到html文件的<head> <base href="./"> </head>

然后在NG2中导入任何文件

import { Auth }                 from './auth.service';

这是根据documentation做基数的首选方式, enter image description here

答案 2 :(得分:1)

如果您有子组件,并且您希望以这种方式导航

路由器服务

String

以这种方式使用navigate([])方法

组件构造函数

这就是this._router的来历

const routes: Routes = [
  {
    path: '',
    component: LoginComponent
  },
  {
    path: 'home',
    component: HomeComponent,
    children: [
      {
        path: 'enter',
        component: EnterDetailsComponent,
      },
      {
        path: 'find',
        component: FindDetailsComponent,
      }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

答案 3 :(得分:0)

plz确保您的head标记中有<base href="/">标记,您可以像这样使用useAsDefault: true attr:

@Routes([
    {path: '/login', component: LoginComponent,useAsDefault: true}
])

答案 4 :(得分:-1)

只需添加一条路线''例外即可。

{ 
    path: '', 
    component: HomeComponent 
}