首页 > 解决方案 > 如何将枚举变体作为整数发送,而不是 Angular 中的字符串

问题描述

我正在使用 Angular 11,并且必须将一些数据发布到后端服务。这是我需要发布的数据:

interface User {
    id: Guid; // Guid is just a type alias to string, with some validation checks
    email: string;
    role: Role
}

enum Role {
    User = 0,
    Administrator = 1
}

现在,当我尝试使用来自 Angular 的默认 HttpClient 发布到我的后端时,问题就来了。这是代码:

createOrUpdateUser(user: User): Observable<User> {
    return this.http.post<User>(`${this.baseUrl}/${this.userUrl}/${this.userCreateOrUpdate}`, user);
}

这工作正常,但发送的 JSON 是“错误的”。它发送这个:

{
    "id": "2abe50d6-4c81-4ace-ad95-c8182d4384a3",
    "email": "someEmail@example.org",
    "role": "0"
}

后端期望这个

{
    "id": "2abe50d6-4c81-4ace-ad95-c8182d4384a3",
    "email": "someEmail@example.org",
    "role": 0
}

不同之处在于后端期望"role": 0,但 Angular 发送"role": "0"。如何让 Angular 发送"role": 0

标签: jsonangulartypescript

解决方案


您可以在发送之前使用 + 将其设为数字​​ api user.role = +user.role。在其他地方,您在用户对象中分配角色的值,将其作为字符串。它不是枚举问题。


推荐阅读