Angular 如何从api获取对象并将其映射到角度模型?
我想从api中获取模型 为此,我使用以下方法:Angular 如何从api获取对象并将其映射到角度模型?,angular,asp.net-web-api,angular5,Angular,Asp.net Web Api,Angular5,我想从api中获取模型 为此,我使用以下方法: [HttpGet] public MyModel GetModel() { MyModel model = new MyModel() { ... }; return model; } 如何获得角度模型结果,以及如何将MyModel映射到角度模型 我有以下资料: getModel() { var url = '/MyController/GetModel/'; th
[HttpGet]
public MyModel GetModel()
{
MyModel model = new MyModel() { ... };
return model;
}
如何获得角度模型结果,以及如何将MyModel
映射到角度模型
我有以下资料:
getModel() {
var url = '/MyController/GetModel/';
this.http.get(url)
.map((data: Response) => {
return data.json() as MyModel;
})
.toPromise().then(x => {
this.myModel = x;
})
}
我在组件的ngOnInit
中调用它
但我有一个错误:
Uncaught (in promise): SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
我的angular请求有什么问题?http.get采用通用的 所以你可以这样做
getModel() {
var url = '/MyController/GetModel/';
this.http.get<MyModel>(url).toPromise().then(x => {
this.myModel = x;
});
}
getModel(){
var url='/MyController/GetModel/';
this.http.get(url.toPromise()。然后(x=>{
this.myModel=x;
});
}
除非您的angular中的模型与api中的模型不同,否则我的工作原理如下:
getModel() {
var url = '/MyController/GetModel/';
return this.http.get(url)
.map((data: Response) => {
return data.json();
}).toPromise().then(x => {
this.myModel = new MyModel(x);
})
}
MyModel
必须有一个接受json
字符串的构造函数。请检查您的响应是否为有效的json-。您使用的是哪个版本的Angular?如果它是4.3+,您使用的是HttpClient,那么您在代码示例中使用的是较旧的方法。它是Angular 5,我使用的是Http
@Sergeyth此链接应该对您有所帮助@Avinash根据上面的代码,我返回的是对象而不是json。我更改了返回json的方法,例如:public JsonResult GetModel(){MyModel MyModel=new MyModel(){..};var result=JsonConvert.SerializeObject(MyModel);返回json(result,JsonRequestBehavior.AllowGet);}
但是现在angular请求甚至没有命中Action,如果我的angular模型与api模型不一样呢@ObedI甚至无法构建它,因为出现了错误:
说:'需要0个参数,但得到了1'
和x=>
:'Parameter'x'隐式具有“any”类型。
@Obedcheck这个链接,一个很酷的方法。您从哪里导入http对象?谢谢@Obed您的建议帮助我编写了正确的代码。