无法读取未定义的 属性 'post' - Angular 2
Cannot read property 'post' of undefined - Angular 2
下面是我的组件文件中的代码片段
import { Component,Injectable,Inject,OnInit, OnDestroy, EventEmitter,Output } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/switchMap';
...
@Injectable()
export class MyComponent {
constructor (private http: Http) { }
saveDetails()
{
var response:any;
var body = customer_details;
var headers = new Headers({ 'Content-Type': 'application/json' });
var options = new RequestOptions({ headers: headers });
this.http.post("/user/add-customer-details", body, options)
.map((res:Response) => res.json()).subscribe(
data => { response = data},
err => console.error(err),
() => {
console.log(response);
}
);
}
}
没有编译错误或任何其他错误,但是
当我调用 post 方法时它说 Cannot read property 'post' of undefined
所以我在 post 方法调用之前尝试 console.log(this.http);
,然后它在浏览器控制台中显示 undefined
,我尝试了所有可能的解决方案,但无法理解为什么它不起作用,请帮助...
提前致谢!!!
您必须将 HTTP_PROVIDERS
添加到组件提供程序数组中,如下所示:
providers: [HTTP_PROVIDERS]
编辑
HTTP_PROVIDERS 已弃用。改为导入 http 模块。
@NgModule({
imports: [
BrowserModule,
HttpModule
],
declarations: [AppComponent],
providers: [],
bootstrap: [AppComponent],
})
您需要将 HttpModule 添加到您的 NgModule 以进行依赖注入。
你可以在这里查看https://angular.io/docs/ts/latest/guide/server-communication.html#!#http-providers
The HttpModule is necessary for making HTTP calls. [...]
在花了几个小时挠头并阅读了所有可能的文章、答案、文档以及可能在 Internet 上可用的所有内容之后,我终于找到了解决方案。
我刚刚更改了我的构造函数
constructor (private http: Http) { }
到
constructor (@Inject(Http) private http:Http) { }
虽然 @Inject
是一个实验性装饰器,但它正在工作
谢谢大家对我的帮助...
下面是我的组件文件中的代码片段
import { Component,Injectable,Inject,OnInit, OnDestroy, EventEmitter,Output } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/switchMap';
...
@Injectable()
export class MyComponent {
constructor (private http: Http) { }
saveDetails()
{
var response:any;
var body = customer_details;
var headers = new Headers({ 'Content-Type': 'application/json' });
var options = new RequestOptions({ headers: headers });
this.http.post("/user/add-customer-details", body, options)
.map((res:Response) => res.json()).subscribe(
data => { response = data},
err => console.error(err),
() => {
console.log(response);
}
);
}
}
没有编译错误或任何其他错误,但是
当我调用 post 方法时它说 Cannot read property 'post' of undefined
所以我在 post 方法调用之前尝试 console.log(this.http);
,然后它在浏览器控制台中显示 undefined
,我尝试了所有可能的解决方案,但无法理解为什么它不起作用,请帮助...
提前致谢!!!
您必须将 HTTP_PROVIDERS
添加到组件提供程序数组中,如下所示:
providers: [HTTP_PROVIDERS]
编辑
HTTP_PROVIDERS 已弃用。改为导入 http 模块。
@NgModule({
imports: [
BrowserModule,
HttpModule
],
declarations: [AppComponent],
providers: [],
bootstrap: [AppComponent],
})
您需要将 HttpModule 添加到您的 NgModule 以进行依赖注入。
你可以在这里查看https://angular.io/docs/ts/latest/guide/server-communication.html#!#http-providers
The HttpModule is necessary for making HTTP calls. [...]
在花了几个小时挠头并阅读了所有可能的文章、答案、文档以及可能在 Internet 上可用的所有内容之后,我终于找到了解决方案。
我刚刚更改了我的构造函数
constructor (private http: Http) { }
到
constructor (@Inject(Http) private http:Http) { }
虽然 @Inject
是一个实验性装饰器,但它正在工作
谢谢大家对我的帮助...