[英]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.js
或router.min.js
文件。
您需要提及“定位策略”,嘗試將其替換為引導程序:
bootstrap(AppComponent,[ROUTER_PROVIDERS,
provide(LocationStrategy, { useClass: HashLocationStrategy })]);
我也有這個問題。 我在angular的github問題之一中找到了解決方法(很抱歉,找不到發布鏈接的鏈接)。 基本上,只要在組件的模板(或其上方的組件樹中的任何位置)中找不到路由器實例,就不會提供該實例。
對我來說,我要做的就是將<a [routerLink]="['/']"></a>
添加到最上方的組件模板中。 該問題可能會在將來的版本中修復,但截至目前(問題提出后一個月),問題仍然存在。
PS我使用的是新路由器,而不是不推薦使用的路由器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.