Angular2路由器未定义

时间:2016-04-12 10:35:56

标签: angular

我想使用路由器检索当前显示的URL(路由器)。为此,我导入路由器。

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

接下来,我将它添加到我的组件的构造函数中。

   constructor(public router : Router)

现在,每当我尝试在其上调用任何内容时,我都会收到错误,因为“路由器”仍未定义。

我读到有另一种使用'location'获取URL的方法,但这不是推荐的方法。但是,如果路由器不是实现这一目标的正确方法,我愿意接受任何建议。但我最好找出为什么在这种情况下未定义路由器。

ROUTER_PROVIDERS已经指定如下:

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

4 个答案:

答案 0 :(得分:0)

您的div #V5 img { position:absolute; right:0px; } 应包含

index.html

AFAIK只能在有路径的组件上注入<script src="https://code.angularjs.org/2.0.0-beta.14/router.dev.js"></script>

或者,您可以将根路由器注入全局服务,然后在任何地方注入此服务。

答案 1 :(得分:0)

您需要在引导应用程序时指定std::lock_quard

ptr, SetPtr and Process

不要忘记将ROUTER_PROVIDERSimport { ROUTER_PROVIDERS } from 'angular2/router'; bootstrap(AppComponent, [ ROUTER_PROVIDERS ]); 文件包含在主HTML文件中。

答案 2 :(得分:0)

您需要提及位置策略,尝试将其替换为您的引导程序:

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

答案 3 :(得分:0)

我也有这个问题。我找到了一个有角度的github问题的解决方法(抱歉,我发现它无法发布链接)。基本上,只要在组件的模板中找不到路由器实例(或者在其上面的组件树中的任何位置),就不会提供路由器实例。

对我来说,我所要做的就是将<a [routerLink]="['/']"></a>添加到最上面的组件模板中。这可能会在未来版本中修复,但截至目前(问题发布后一个月),问题仍然存在。

P.S。我使用新路由器而不是路由器弃用