2016-05-24 10 views
1

角2ルータに問題があります。基本的に私のアプリを関数でナビゲートして、in the official exampleのように、ルータからnavigate関数を使いたいと思っています。だからここ角2ルータのインスタンシエーションの問題

は、私は私のファイルに持っているものです。

index.htmlを

<script src='@routes.Assets.versioned("lib/typescript/lib/typescript.js")'></script> 
<script src='@routes.Assets.versioned("lib/es6-shim/es6-shim.min.js")'></script> 
<script src='@routes.Assets.versioned("lib/angular2/bundles/angular2-polyfills.js")'></script> 
<script src='@routes.Assets.versioned("lib/angular2/es6/dev/src/testing/shims_for_IE.js")'></script> 
<script src='@routes.Assets.versioned("lib/systemjs/dist/system.js")'></script> 
<script src='@routes.Assets.versioned("lib/rxjs/bundles/Rx.js")'></script> 
<script src='@routes.Assets.versioned("lib/angular2/bundles/angular2.dev.js")'></script> 
<script src='@routes.Assets.versioned("lib/angular2/bundles/http.js")'></script> 
<script src='@routes.Assets.versioned("systemjs.config.js")'></script> 
<script src='@routes.Assets.versioned("lib/angular2/bundles/router.dev.js")'></script> 

と私がナビゲートを使用したいtypescriptファイルに:

import { Http } from "angular2/http" 
import { Router } from "angular2/router" 

export class ClassName { 
    constructor (private _http: Http, private _router: Router) {} 

    goSomewhere(pageName: string) { 
     let link = [pageName] 
     this._router.navigate(link) 
    } 
} 

にです基本的にこれを元に戻して段階的に追加しようとしましたが、インポートが機能してコンストラクタに追加するときに失敗し、プライベートまたはリネームを削除しましたg変数はどちらも機能しませんでした。私の輸入に

私はangular2.jsとrouter.jsを持っていたし、この問題を得た:

angular2-polyfills.min.js:1 Error: EXCEPTION: Error during instantiation of t! (e -> t). 

が、私はそれがのdevのLIBSを使用することによって、問題を解決することができhereを見つけましたが、今私はこれを持っています:

angular2-polyfills.min.js:1 Error: EXCEPTION: Error during instantiation of ApplicationRef_! (ApplicationRef -> ApplicationRef_). 

今、私は少し失われた...私はそうアンギュラ2.

+0

私はあなたのクラス名を推測する機能を使用することが_className.doSomething(this._router、FOO)を使用する権利@Injectableクラスですか?それにRouteConfigが定義されていませんか? – Scipion

+0

ええ、そうです、ここから来るかもしれません。注射可能なクラスでルータを使用する方法があるのですか、それともコンポーネントで使用することを余儀なくされています(ここでは使用できますが、エラーを管理するのは難しいです)。 – Guigui

答えて

1

ベータ17バージョンを使用している情報についてはよそれを動作させる方法を見つけました。私たちは、私は、注射クラスでこれを作ったので、私は望んでいたロジックを維持するために、無@RoutesConfigと@Injectableのコンストラクタでルータを使用することはできません。

doSomething(router: Router, foo: any) { 
    //instructions with set of link variable 
    router.navigate(link) 
} 

、今私は、注射クラスを追加する必要がありますし、すべての私のコンポーネントのコンストラクタ内のルータと

が、それはいくつか他の人を助けることを願っています:)