以下是我的组件文件
中的代码段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
,我尝试了所有可能的解决方案,但无法理解为什么它不起作用,请帮助......
提前致谢!!!
答案 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调用所必需的。 [...]