【发布时间】:2017-12-05 01:40:38
【问题描述】:
我正在使用 Angular Reactive 表单,我收到 form.value 并将其发送到 asp.net web-api。下面代码中名为len 的对象是我编写的一个自定义类,它是TimeSpan 的一个非常简单的版本。
这是我的请求;
{
"id": "a7b06cf9-36a5-4c7a-99e5-8b9661469329",
"minCapacity": 5,
"maxCapacity": 10,
"len": {
"Days": 0,
"Hours": 2,
"Minutes": 0
},
}
默认情况下.NET TimeSpan 需要这样的输入:
string.Format("{0}.{1}:{2}:{3}", len.Days, len.Hours, len.Minutes, len.Seconds)
否则将变量len 设为null。
因此,我对我的自定义 TimeSpan 类实现了覆盖 toString()。然而,当在我的Typescript 代码中使用 HTTP 类时,我仍然得到 JSON 格式的对象。
我已经在 SO 和谷歌上摆弄了几个小时,但我没有找到答案。我希望这不是重复的
有没有办法在client side 覆盖它?
component.ts
saveItem(model: Room) {
let selected = this.selected;
this.roomService.createUpdateRoom(model).subscribe(
response => {
Helpers.setLoading(false);
var result = response as ServiceResult<any>;
if (result.hasError) {
this.toaster.error(result.message, 'Error');
}
else {
alert('ok');
this.viewForm();
}
},
error => {
this.toaster.error(error.message, 'Error');
});
}
service.ts
createUpdateRoom(request) {
return this.post('api/v1.0/room/createupdate', true, request);
}
base.service.ts
post(apiAddress: string, isAuthorizeRequest: boolean, parameter: any): Observable<any> {
return this.intercept(this.injector.get(AuthHttp).post(this.baseUrl + apiAddress, parameter).map(
(response) => {
let data = response.json();
if (data) {
httpSuccess = data;
}
return httpSuccess;
}
));
}
timespan.ts
export class TimeSpan {
day: number = 0;
hour: number = 0;
minute: number = 0;
toTimeString(): string {
return this.hour +':' + this.minute;
}
toString = (): string => {
return this.day + ':' + this.toTimeString() + ':00';
}
}
room.ts
export class Room {
id: string;
minCapacity: number;
maxCapacity: number;
len: TimeSpan;
}
【问题讨论】:
-
该问题缺少您所描述的实际客户端代码。请提供stackoverflow.com/help/mcve
-
请分享客户端代码以帮助您
-
是的。不要用文字描述代码,而是发布它。您描述的内容可能对您有意义,但对其他用户没有意义。问题应该有明确的问题陈述,否则会被视为离题并被关闭。
-
我看错了你的评论,对不起,我以为你想要服务器端代码:)
-
@HakanMaac 仍然不确定那里发生了什么,代码片段太分散了。 saveItem 是如何被调用的?是如果您担心模型:房间的形状不应该发送到后端,然后使用函数在提交时预处理模型,如答案所示。从上面的代码甚至看不出模型真的是 Room 的一个实例,而 len 是 TimeSpan 的一个实例。如果它们来自表单控件,则模型很可能是一个普通对象。
标签: angular typescript asp.net-web-api