无法阅读财产' post' undefined - Angular 2

时间:2017-06-04 10:57:11

标签: javascript angular typescript angular-http

以下是我的组件文件

中的代码段
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,我尝试了所有可能的解决方案,但无法理解为什么它不起作用,请帮助......

提前致谢!!!

3 个答案:

答案 0 :(得分:2)

您必须将 graph.FindNode("test1").Attr.Shape = (Shape) (int)Enum.Parse(typeof(Shape),"Diamond"); 添加到组件提供程序数组中,如下所示:

HTTP_PROVIDERS

修改

不推荐使用HTTP_PROVIDERS。改为导入http模块。

providers: [HTTP_PROVIDERS]

答案 1 :(得分:2)

在花了几个小时摸不着头脑,阅读所有可能的文章,答案,文档以及互联网上可能提供的所有内容后,我终于找到了解决方案。

我刚刚从

更改了我的构造函数
constructor (private http: Http) { }

constructor (@Inject(Http) private http:Http) { }

虽然@Inject是实验装饰者,但它正在运作

谢谢大家的帮助......

答案 2 :(得分:1)

您需要将HttpModule添加到NgModule以进行依赖注入。

您可以在此处查看https://angular.io/docs/ts/latest/guide/server-communication.html#!#http-providers

  

HttpModule是进行HTTP调用所必需的。 [...]