http未在angular2中定义

时间:2016-04-23 23:35:13

标签: typescript angular

我正在尝试对我的其他localhost服务器进行REST Api调用,我已经提供了这项服务:

import { Component } from 'angular2/core';
import {AuthenticationService} from '../services/authentication.service';

@Component({
    selector: 'wd-header';
    templateUrl: 'app/templates/header.html'
    providers: [AuthenticationService]
})

export class HeaderComponent {
    constructor(private _authenticationService: AuthenticationService) {}
    authentication = this._authenticationService.getAuthenticationData()
}

在我的组件中调用它:

import {bootstrap}    from 'angular2/platform/browser';

import {ROUTER_PROVIDERS} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
import {App} from './app.component';
import {GlobalService} from './app.service';

bootstrap(App, [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS,
    GlobalService
]);

出于某种原因,Angular声称Http未定义:

  

EXCEPTION:HeaderComponent实例化期间出错!   angular2.dev.js:22911:9

     

ORIGINAL EXCEPTION:TypeError:this._http未定义

我做错了什么?

编辑以包含main.ts:

{{1}}

2 个答案:

答案 0 :(得分:2)

我认为代码中的问题是您在AuthenticationService中使用了两个构造函数。

尝试像这样编辑:

constructor(private _globals: GlobalService, private _http: Http) {}

getAuthenticationData()中添加一个return语句。

请告诉我是否修复了它。

答案 1 :(得分:2)

我会以这种方式重构你的服务代码:

@Injectable()
export class AuthenticationService {
  constructor(private _globals: GlobalService, private _http: Http) {
    this.globals = this._globals.getGlobals();
  }

  getAuthenticationData() {
    return this._http.get(this.globals.apiURL);
  }
}

您的服务只需要一个构造函数,并将globals属性初始化为此构造函数。

小心使用"这个"用于引用类本身的类属性的关键字。