首页 > 解决方案 > Angular 7 http.post JSON 数字作为字符串发送

问题描述

我有一个使用“数字”类型的属性(超时)定义的 Angular 类:

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 字符串发送?

标签: jsonangularangular7

解决方案


事实证明,这可能是 Material Angular 的问题。以前我没有在输入元素上指定“类型”。当我添加“type = number”(如下所示)时,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>

推荐阅读