繁体   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