我正在尝试对我的其他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}}
答案 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属性初始化为此构造函数。
小心使用"这个"用于引用类本身的类属性的关键字。