簡體   English   中英

Angular2路由器未定義

[英]Angular2 router undefined

我想使用路由器檢索正在顯示的當前URL(路由器)。 為此,我導入了路由器。

 import {RouteParams,Router} from 'angular2/router';

接下來,將其添加到組件的構造函數中。

   constructor(public router : Router)

現在,每當我嘗試對其調用任何內容時,都會出現錯誤,因為“路由器”仍未定義。

我讀到有另一種通過使用“位置”來獲取URL的方法,但這不是推薦的方法。 但是,如果路由器不是實現此目的的正確方法,我歡迎任何建議。 但我最好找出這種情況下為什么未定義路由器。

ROUTER_PROVIDERS已指定為:

bootstrap(AppComponent, [
    ROUTER_PROVIDERS, HTTP_PROVIDERS,....])

您的index.html應該包含

<script src="https://code.angularjs.org/2.0.0-beta.14/router.dev.js"></script>

AFAIK,您只能在具有路由的組件上注入Router

或者,您可以將根路由器注入全局服務,然后在各處注入該服務。

引導應用程序時,需要指定ROUTER_PROVIDERS

import { ROUTER_PROVIDERS } from 'angular2/router';

bootstrap(AppComponent, [ ROUTER_PROVIDERS ]);

不要忘記在您的主HTML文件中包含router.dev.jsrouter.min.js文件。

您需要提及“定位策略”,嘗試將其替換為引導程序:

bootstrap(AppComponent,[ROUTER_PROVIDERS,
    provide(LocationStrategy, { useClass: HashLocationStrategy })]);

我也有這個問題。 我在angular的github問題之一中找到了解決方法(很抱歉,找不到發布鏈接的鏈接)。 基本上,只要在組件的模板(或其上方的組件樹中的任何位置)中找不到路由器實例,就不會提供該實例。

對我來說,我要做的就是將<a [routerLink]="['/']"></a>添加到最上方的組件模板中。 該問題可能會在將來的版本中修復,但截至目前(問題提出后一個月),問題仍然存在。

PS我使用的是新路由器,而不是不推薦使用的路由器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM