我对Angular 2路由器有疑问。我基本上希望能够使用函数在我的应用程序中导航,所以我想使用路由器中的导航功能,如in the official example。
所以这就是我在文件中的内容:
的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)
}
}
基本上是这样,我试图逐步撤消和添加,导入工作,然后将其添加到构造函数时失败,删除私有或重命名变量也没有工作。
在我的导入中,我曾经有过angular2.js和router.js并且遇到了这个问题:
angular2-polyfills.min.js:1 Error: EXCEPTION: Error during instantiation of t! (e -> t).
但是我发现here它可以通过使用dev libs解决问题,但现在我有了这个:
angular2-polyfills.min.js:1 Error: EXCEPTION: Error during instantiation of ApplicationRef_! (ApplicationRef -> ApplicationRef_).
现在我有点迷失...有关我使用 beta 17 版Angular 2的信息。
答案 0 :(得分:1)
所以我找到了一种让它发挥作用的方法。我们不能在没有@RoutesConfig的@Injectable的构造函数中使用Router,所以为了保持我想要的逻辑,我在我的注入类中做了这个:
doSomething(router: Router, foo: any) {
//instructions with set of link variable
router.navigate(link)
}
现在我只需在所有组件构造函数中添加injectable类和路由器,并使用_className.doSomething(this._router,foo)来使用函数
希望它能帮助其他人:)