![](/img/trans.png)
[英]Angular with Azure Durable Functions => retryWhen for http response
[英]Angular 4 http response has no functions
我有一个带有函数的类:
export class Order {
status: string;
public isNew(): boolean {
return status == 'NEW';
}
}
创建新订单时,可以调用以下函数:
let order = new Order();
order.isNew();
但是,如果从后端检索订单并调用该方法, order.isNew is not a function
收到错误消息, order.isNew is not a function
:
this.http.get('url')
.map(response => response.json() as Order)
.subscribe(order => order.isNew());
我究竟做错了什么?
在示例代码中没有逻辑可以使一些简单的JSON神奇地成为您的Order对象。 您必须将其转换。 'as'运算符不执行此操作,这只是在TypeScript级别上强制类型转换。 那里没有实际的转换发生。
如果您希望实现目标,请在Order上创建一个采用JSON的构造函数,然后调用.map(response => new Order(response.json()))
您只是在对订单进行响应,而不是在创建订单对象。 这就是为什么您会收到该错误。
让你的班级像这样
export class Order {
status: string;
constructor(obj?: any) {
this.status = obj && obj.status || '';
}
public isNew(): boolean {
return status == 'NEW';
}
}
this.http.get('url')
.map(response => response.json())
.subscribe(order => {
const new_order = new Order(order);
});
因为在数据库中存储的是数据,而不是函数。 这意味着您的函数没有保存,因此当您收到响应时,它就不在其中。
此外,您只投放订单响应,而不创建新订单。 这样做主要是为了在IDE中具有自动完成功能。
如果您希望它起作用,则需要创建一个构造函数:
export class Order {
constructor(public status?: string) { this.status = status; }
public isNew(): boolean { return status == 'NEW'; }
}}
然后,您需要根据您的响应创建一个对象:
this.http.get('url')
.map(response => new Order(response.json().status))
.subscribe(order => order.isNew());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.