我有一个Angular类,其中定义了一个'number'类型的属性(超时):
export class EngineSpec {
name: string;
base_url: string;
version: string;
timeout: number;
tls: boolean = false;
user_agent: string;
}
但是,当我http.post这个类的实例时,该属性将作为字符串发送:
{"tls":false,
"name":"local-vm",
"base_url":"http://localhost:2367",
"version":"1.3",
"timeout":"60"
}
有什么想法为什么要将数字作为JSON字符串发送?
答案 0 :(得分:2)
事实证明,这可能与Material Angular有关。以前,我没有在输入元素上指定“类型”。当我添加“类型=数字”(如下所示)时,JSON将timout表示为数字。我认为,由于基础类将超时表示为数字,因此流程管道中的某些内容会将输入转换为数字。无论如何,在输入元素上指定类型可以解决我的问题。
<mat-form-field>
<input matInput #input [readonly]="editing?null:''" [(ngModel)]="engineSpec.timeout" placeholder="Timeout" type="number"/>
<mat-hint align="end">Enter timeout (in seconds) for API calls to this engine.</mat-hint>
</mat-form-field>