2016-05-24 134 views
1

我對Angular 2路由器有問題。我希望基本上能夠通過我的應用程序導航功能,所以我想使用路由器的導航功能,如in the official exampleAngular 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> 

,並在將輸出文件,我想用導航:

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). 

,但我發現here它可以通過使用開發庫解決這個問題,但現在我有這個:

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

現在我有點失落......有關信息我使用的是測試17版的角2.

+0

我猜你類名是@Injectable類吧?並且沒有定義任何RouteConfig? – Scipion

+0

嗯,你是對的,可能來自這裏。有沒有辦法在一個注入類中使用路由器,或者我被迫在一個組件上使用它(在這裏我可以使用它,但更難以管理那裏的錯誤)? – Guigui

回答

1

所以我找到了一種方法來使其工作。我們不能在@Injectable沒有@RoutesConfig的構造函數中使用路由器,所以要保持我想要的邏輯,我在注射類所做的這樣:

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

,現在我只需要添加註射類和在我所有的部件構造的路由器和使用_className.doSomething(this._router,FOO)使用的功能

希望這將有助於其他一些:)