Angular 7 http.post JSON数字作为字符串发送

时间:2018-11-11 23:30:12

标签: json angular angular7

我有一个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字符串发送?

1 个答案:

答案 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>