2016-01-08 55 views
2

我对Angular 2.0非常新(谁不是!?!?!),我无法让我的路由工作!我不断收到错误'Component "LoginComponent" has no route config. in [['/Register'] in LoginComponent'。组件没有路由配置。在组件中 - 角2路由错误

这是我@RouteConfig和引导代码(证明我注入依赖关系)从我boot.ts文件采取

bootstrap(LoginComponent, [ 
    ROUTER_PROVIDERS, HTTP_PROVIDERS 
]); 

@RouteConfig([ 
    {path: '/login', name: 'Login', component: LoginComponent, useAsDefault: true}, 
    {path: '/register', name: 'Register', component: RegisterComponent} 
]) 

这是我的LoginComponent代码...从我login.component.ts文件

import {Component} from 'angular2/core'; 
import {FORM_DIRECTIVES, FormBuilder, ControlGroup, Validators} from 'angular2/common'; 
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from 'angular2/router'; 
import {Http, Headers, Response} from "angular2/http"; 

@Component({ 
    selector: 'login', 
    templateUrl: 'app/login/login.component.html', 
    directives: [FORM_DIRECTIVES, ROUTER_DIRECTIVES] 
}) 

export class LoginComponent { 

    loginForm:ControlGroup; 
    http: Http; 
    userNotFound: boolean; 

    constructor(fb:FormBuilder, http: Http) { 
     this.loginForm = fb.group({ 
      'email': ['', Validators.required], 
      'password': ['', Validators.required] 
     }); 

     this.http = http; 
     this.userNotFound = false; 
    } 

    login(event: Event, val:string):void { 
     // stuff happens here 
    } 

    forgotPassword() { 
     // stuff happens here 
    } 
} 

在我看来,我有一个链接到我的应用程序的不同部分。

例外:在浏览器中,我得到了以下错误从我login.component.html文件采取

<a (click)="forgotPassword()">Forgot Password</a> 
<br> 
<a [routerLink]="['/Register']">Register</a> 
<br> 
<div class="error" *ngIf="userNotFound"> 
    User not found. Please try again... 
</div> 

但是组件“LoginComponent”没有路线配置。在LoginComponent的[['Register'中] @ 23:19] 原文例外:组件“LoginComponent”没有路由配置。 ORIGINAL STACKTRACE: 错误:组件“LoginComponent”没有路由配置。

任何人都可以看到究竟是什么问题吗?默认的作品和一切都很好,直到我介绍<a [routerLink]="['/Register']">Register</a>超链接。我一直在努力工作一段时间!

这里是我的项目结构(如果它帮助)...

project structure

+0

其中是你的'',第二件事angular2期望从LoginComponent路由但无法找到。 –

+1

你正在引导错误的组件。因此,当你编写'/ SomeComponent'(绝对路径)时,你的根组件是'LoginComponent',它将从没有RouteConfig的'LoginComponent'开始。 –

+0

我有一个类似嵌套路由的问题。关于这个问题的解释有所帮助。 https://github.com/angular/angular/issues/8420 – theUtherSide

回答

1

其实高达我能理解的问题是路由文件,因为你是引导登录组件文件和你正在做的您在boot.ts文件中的路由。而是你必须做的loginComponent文件路由因为angular2找到你的情况bootstraped文件即路由boot.ts但是当你写

<a [routerLink]="['/Register']">Register</a> 

这将查找的文件login.component.ts路由。但无法找到我认为的错误。其次是进口,这在我想的问题中没有提到。

在logincomponent文件中使用你的父路由,我希望这会有所帮助。

+0

我意识到我应该使用routerLink。我已将@RouteConfig移到LoginComponent中 - 我仍然遇到错误! –

+0

将@RouteConfig移入logincomponent后出现错误?错误是相同还是改变了?并检查registerCompoent的正确导入路径。它是否正确? –

0

我有一个类似的错误,要是你,请将此代码

@RouteConfig([ 
    {path: '/login', name: 'Login', component: LoginComponent, useAsDefault: true}, 
    {path: '/register', name: 'Register', component: RegisterComponent} 
]) 

LoginComponent文件里。

import {Component} from 'angular2/core'; 
import {FORM_DIRECTIVES, FormBuilder, ControlGroup, Validators} from 'angular2/common'; 
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from 'angular2/router'; 
import {Http, Headers, Response} from "angular2/http"; 

@Component({ 
    selector: 'login', 
    templateUrl: 'app/login/login.component.html', 
    directives: [FORM_DIRECTIVES, ROUTER_DIRECTIVES] 
}) 

export class LoginComponent { 
..// 

import {Component} from 'angular2/core'; 
    import {FORM_DIRECTIVES, FormBuilder, ControlGroup, Validators} from 'angular2/common'; 
    import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from 'angular2/router'; 
    import {Http, Headers, Response} from "angular2/http"; 

    @RouteConfig([ 
    {path: '/login', name: 'Login', component: LoginComponent, useAsDefault: true}, 
    {path: '/register', name: 'Register', component: RegisterComponent} 
    ]) 

    @Component({ 
     selector: 'login', 
     templateUrl: 'app/login/login.component.html', 
     directives: [FORM_DIRECTIVES, ROUTER_DIRECTIVES] 
    }) 

    export class LoginComponent { 
    ..// 

我希望这可以帮助你,为我的英语不好对不起。

0

嗨可能有点晚,但我认为这个问题可能是你的名字引用不正确。链接应该如下删除正斜杠。

<a [routerLink]="['Register']">Register</a>