2016-03-28 13 views
1

EDIT ここに私のplunkerです:私は活字体を使用していplnkr.co/edit/qMBc5j62jQoBJLsFYgr4?p=preview角度2 - ルータのインスタンス化中にエラーが発生しました - (ルーターアウトレット - >ルータ)

私は次のエラーを取得しています:

Error during instantiation of Router! (RouterLink -> Router). and (RouterOutlet -> Router)

私はindex.html<base href="/">を変更したり、ブートストラップするAPP_BASE_HREFを追加/追加など、この問題のために、このフォーラムにさまざまなソリューションを、試してみました。

私は公式の角度プランカーチュートリアルhttp://plnkr.co/edit/d8pewJf9kVqD3kTSvQmK?p=previewからコードを使用していますが、これはうまくいきます。次のように

マイapp.component.tsが見えます:

import { Component } from 'angular2/core'; 
import {LandingComponent} from './landing.component'; 
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from 'angular2/router'; 

@Component({ 
selector: 'my-app', 
template: ` 
    <h1>Hello</h1> 
    <h1>{{title}}</h1> 
    <nav> 
     <a [routerLink]="['Landing']">Heroes</a> 
    </nav> 
    <router-outlet></router-outlet> 
    `, 
directives: [ROUTER_DIRECTIVES], 
providers: [ROUTER_PROVIDERS] 
}) 

@RouteConfig({ 
{ 
    path: '/landing', 
    name: 'Landing', 
    component: LandingComponent, 
    useAsDefault: true 
} 

}) 

export class AppComponent { 
title = 'Win Free!'; 
} 

main.ts

import {bootstrap} from 'angular2/platform/browser'; 
import {AppComponent} from './app.component'; 
bootstrap(AppComponent); 

index.htmlを

<html> 
<head> 

<script>document.write('<base href="' + document.location + '" />'); </script> 
     <title>Angular 2 QuickStart</title> 
     <meta name="viewport" content="width=device-width, initial-scale=1">  
     <link rel="stylesheet" href="styles.css"> 
     <!-- 1. Load libraries --> 
     <!-- IE required polyfills, in this exact order --> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.35.0/es6-shim.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.20/system-polyfills.js"></script> 
    <script src="https://npmcdn.com/[email protected]/es6/dev/src/testing/shims_for_IE.js"></script> 
    <script src="https://code.angularjs.org/2.0.0-beta.12/angular2-polyfills.js"></script> 
    <script src="https://code.angularjs.org/tools/system.js"></script> 
    <script src="https://npmcdn.com/[email protected]/lib/typescript.js"></script> 
    <script src="https://code.angularjs.org/2.0.0-beta.12/Rx.js"></script> 
    <script src="https://code.angularjs.org/2.0.0-beta.12/angular2.dev.js"></script> 
    <script src="https://code.angularjs.org/2.0.0-beta.12/router.dev.js"></script> 


    <script> 
     System.config({ 
     transpiler: 'typescript', 
     typescriptOptions: { emitDecoratorMetadata: true }, 
     packages: {'app': {defaultExtension: 'ts'}} 
     }); 
     System.import('app/main') 
      .then(null, console.error.bind(console)); 
    </script> 

    </head> 
    <!-- 3. Display the application --> 
    <body> 
    <my-app>Loading...</my-app> 
    </body> 
</html> 

ありがとうございました。

+0

ほとんどエイヴィーな事があるようです。あなたのコードプランナーはありますか? – micronyks

+0

あなたのplnkrはうまくいきます、あなたのplnkrでどこがエラーですか? @ PardeepJain。 –

+0

。それは彼のプランナーではない。彼は彼の参照のためにそれを使用しています。 – micronyks

答えて

1

providers: [ROUTER_PROVIDERS]AppComponentから削除します。 ROUTER_PROVIDERSは、boostrap(AppComponent, [ROUTER_PROVIDERS])に追加するだけでアプリケーション全体で共有する必要があります。

コンポーネントをprovidersコンポーネントに追加すると、コンポーネントは新しいインスタンスを取得し、意図したとおりに動作しないようにします。あなたのPlunker(Edit ...後リンケ)で

更新

は成分のみではなく、bootstrap()ROUTER_PROVIDERSを持っていますが、それは他の方法で回避する必要があります。 @RouteConfig()には配列が必要だが、{}[]ではなく)の構文問題がありました。

Working Plunker

+0

私はまだ同じエラーが発生しています。奇妙なことに、私は上記のリンク先の公式の角型プランナーと同じ構造を使用しています。 – ronanmc

+0

答えを更新しました。 –

+0

これで動作します。 '@ RouteConfig'を更新して' [] 'と' ROUTER_PROVIDERS'も使用しました。ありがとうございました。 – ronanmc

関連する問題