如何在angular2中注入位置?

如何在angular2中注入位置?,angular,angular2-routing,Angular,Angular2 Routing,我认为注入位置的方式与注入Http的方式相同。但是,我的应用程序中断-如果我取消最后一行中的“public location:location”注释,则页面不会呈现。就我所见,我有正确的导入和提供程序数组: import {Component} from 'angular2/core'; import { ROUTER_DIRECTIVES, ROUTER_PROVIDERS, RouteConfig, Location, LocationStrategy

我认为注入位置的方式与注入Http的方式相同。但是,我的应用程序中断-如果我取消最后一行中的“public location:location”注释,则页面不会呈现。就我所见,我有正确的导入和提供程序数组:

import {Component} from 'angular2/core';
import {
    ROUTER_DIRECTIVES,
    ROUTER_PROVIDERS,
    RouteConfig,
    Location,
    LocationStrategy,
    HashLocationStrategy
} from 'angular2/router';

import {TaskForm} from './task_form';
import {TaskList} from './task_list';
import {AboutUs} from './about_us';

@Component({
    selector: 'task-app',
    templateUrl: 'app/task_app.html',
    providers: [ROUTER_PROVIDERS],
    directives: [TaskForm, TaskList, ROUTER_DIRECTIVES]
})
@RouteConfig([
    {path: '/', component: TaskApp, as: 'Home'},
    {path: '/about_us', component: AboutUs, as: 'aboutUs'}
])
export class TaskApp {  
    constructor(/*public location: Location*/) { 
在我的index.html中,我有以下行:

<script src="https://code.angularjs.org/2.0.0-beta.0/router.dev.js"></script>
不确定我是否错过了什么,或者当前构建已损坏。如果是第一个案例,我错过了什么?

在您的NGM模块中

  providers: [ 
     { provide: 'locationObject', useValue: location}
  ]
在您的组件中,您需要这样注入它

import { Component, Inject } from '@angular/core';

 constructor(
     @Inject('locationObject') private locationObject: Location
 ) {}

你做得对,你就是这样注射的。您在控制台中看到任何错误吗?PS:从组件中删除
ROUTER\u PROVIDERS
,它已经在引导中。我建议您完全删除node\u modules文件夹,删除package.json中与angular2相关的所有内容,然后重试安装。@EricMartinez,终于解决了环境问题。没有编译错误,但在运行时,在控制台中,它抱怨我没有指定APP_BASE_HREF。。。一旦我在引导中添加了“provide(APP_BASE_HREF,{useValue:'/'})”之后,一切都正常了。然而,根据文档,只有在使用PathLocationStrategy(,这是默认值)时才需要这样做,但我认为我特别指定了HashLocationStrategy。
import { Component, Inject } from '@angular/core';

 constructor(
     @Inject('locationObject') private locationObject: Location
 ) {}