【问题标题】:Angular 2 get route no provider for RouteAngular 2 get route no provider for Route
【发布时间】:2016-09-01 06:01:38
【问题描述】:

在 Angular 2 中,我希望能够使用 route.path 来.. 获取路径。

在我的组件构造函数中:

constructor(private route: Route) {}

所以我希望能够打电话:

this.route.path

对于我得到的应用引导程序:

bootstrap(AppComponent,
[
    ROUTER_PROVIDERS,
]);

但我仍然收到 No Provider for Route! 错误

【问题讨论】:

  • 如果在构造函数之外使用,只需尝试将构造函数中的修饰符更改为公共

标签: angular


【解决方案1】:

我假设你注入 Location 而不是 RouteRoute 用于路由配置,Angular 无法知道要注入哪个 Route 实例。

Location 提供了path() 函数来获取当前的URL。

根据 Angular2 版本,有不同的导入路径。

另见Location and HashLocationStrategy stopped working in beta.16

import {Location} from 'angular2/router';

>= beta 16

import {Location} from 'angular2/platform/common';  
constructor(private location:Location) {
  console.log(location.path());
}

>= rc.0

import {Location} from '@angular/common';

【讨论】:

  • 你让我走上了正轨,它必须是 import { Location } from '@angular/common'; ,因为 2.0.0-rc.0 如果你添加这个,我会接受 :)
  • 对了,忘了又改了
【解决方案2】:

Route 类可以被注入。你可以注入Router一个或者RouteParams

constructor(private router:Router,private params:RouteParams) {
  this.id = params.get('id');
}

如果你需要当前路由的路径,注入Location类并使用它的path方法

constructor(private location:Location) {
  var path = location.path();
}

【讨论】:

  • 从哪里导入 RouteParams post beta (rc.1)。从@angular/router 导入它是行不通的,我还找不到它在哪里说的。
【解决方案3】:

尝试使用 ROUTER_BINDINGS。

【讨论】:

  • ROUTER_BINDINGS 自 alpha41 以来已被弃用(使用 ROUTER_PROVIDERS)
  • 回答太短了,你也可以用这个作为评论。
猜你喜欢
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多