2016-04-13 13 views
2

私の下のangular2ルーティングプログラムでは、useAsDefault:trueを削除して以下のエラーが表示された場合、ルーティングは機能しません。子ルーティングAngular2がuseAsDefault:trueなしで動作しない

例外:リンク "[" Pen "]"は端末命令に解決されません。 [4 @ AppComponentで[ 'ペン']:19]で

**This is Child routing Code:**

import {Component} from 'angular2/core'; 
import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router'; 
import {RouteParams} from "angular2/router"; 
import {Pen1Component} from "./pen/app.component.pen1"; 
import {Pen2Component} from "./pen/app.component.pen2"; 


@Component({ 
    templateUrl:'dev/products/app.component.pen.html' 
    template: ` 
      <nav> 
       <ul> 
       <li> 
       <a [routerLink]="['Pen1']">Pen1</a></li> 

       <li> 
       <a [routerLink]="['Pen2']">Pen2</a></li> 
       </ul> 

      </nav> 
     <router-outlet></router-outlet> 
    `, 
    directives: [ROUTER_DIRECTIVES], 
    }) 
@RouteConfig([ 
    {path: '/', name: 'Pen1', component: Pen1Component}, 
    {path: '/pen2', name: 'Pen2', component: Pen2Component} 

export class PenComponent { 
} 

これは、親ルーティングコードです:、

import {Component} from 'angular2/core'; 
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from 'angular2/router'; 
import {PenComponent} from './products/app.component.pen'; 
import {BookComponent} from './products/app.component.book'; 


@Component({ 
    selector: 'my-app', 
    template: ` 
      <nav> 
       <ul> 
       <li> 
       <a [routerLink]="['Pen']">Pen</a></li> 

       <li> 
       <a [routerLink]="['Book',{id:1}]">Book</a></li> 
       </ul> 

      </nav> 
     <router-outlet></router-outlet> 
    `, 
    directives: [ROUTER_DIRECTIVES], 
    providers:[ROUTER_PROVIDERS] 

}) 

@RouteConfig([ 
    {path: '/pen/...', name: 'Pen', component: PenComponent}, 
    {path: '/book/:id', name: 'Book', component: BookComponent} 


]) 


export class AppComponent { 

} 

しかし、このコードを追加する場合そのうまく動作します。

@RouteConfig([ 
    {path: '/', name: 'Pen1', component: Pen1Component, useAsDefault: true}, 
    {path: '/pen2', name: 'Pen2', component: Pen2Component} 
+0

パスを使用しない限りuseAsDefaultオプションなしで動作するかどうかはわかりません。 – Gary

答えて

3

このコードをapp.component.tsで試してください。

import {Component} from 'angular2/core'; 
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from 'angular2/router'; 
import {PenComponent} from './products/app.component.pen'; 
import {BookComponent} from './products/app.component.book'; 


@Component({ 
    selector: 'my-app', 
    template: ` 
      <nav> 
       <ul> 
       <li> 
       <a [routerLink]="['Penn']">Pen</a></li> 

       <li> 
       <a [routerLink]="['Book',{id:1}]">Book</a></li> 
       </ul> 

      </nav> 
     <router-outlet></router-outlet> 
    `, 
    directives: [ROUTER_DIRECTIVES], 
    providers:[ROUTER_PROVIDERS] 

}) 

@RouteConfig([ 
    {path: '/penn/', name: 'Penn', component: PenComponent}, 
    {path: '/book/:id', name: 'Book', component: BookComponent} 

]) 


export class AppComponent { 

} 

私はPennPenを交換してください。

Angular2はuseAsDefault: trueなしで実行できます。これは エラーを返さないでしょう、この場合は出力はありません。

+0

AngularJsにはいくつかの予約語があります。 5月**ペン**はそのような言葉です。私はこれについてはわかりません、私はちょうどいくつかの他の名前とその仕事を試してみてください。 –

+0

いいえ、動作しません。しかし、私はこのコードを追加しても問題ありません。 @経路の構成(パス: '/'、名前: 'Pen1'、コンポーネント:Pen1Component、useAsDefault:true)、 {パス: '/ pen2'、名前: 'Pen2'、コンポーネント:Pen2Component} –

+0

あなたは別の名前で試しましたか? –

関連する問題