Angular:将字符串数组映射到 http get 调用中的枚举值数组

萨沙·施波塔

我的打字稿代码中有一个枚举,其中列出了所有可能的用户角色:

enum UserRole {
    CONSULTANT,
    MANAGER,
    ...
}

我有一个 REST 端点/users/id/roles,它返回表示特定用户角色的字符串数组:

[
    "CONSULTANT",
    "MANAGER",
    ...
]

现在我想在我的前端代码中映射这个数组。我绑这样做是这样的:

import {Http} from '@angular/http';
import {Observable} from "rxjs/Observable";
import {plainToClass} from "class-transformer";
...

getUserRoles(id: string): Observable<UserRole[]> {
    return this.http.get(`/users/${id}/roles`)
        .map(responce => plainToClass(UserRole, responce.json()));
}

但我得到:

错误 TS2345:“typeof UserRole”类型的参数不可分配给“ClassType”类型的参数。类型“typeof UserRole”不匹配签名“new (...args: any[]): UserRole[]”。

问:有没有办法将字符串数组转换为枚举元素数组?

注意:我使用的是 Typescript 2.5.3。与 Angular 5.0.5 配对。

柯克·拉金

map一旦您使用 将其转换为对象json您就可以在从服务器返回的数组上使用,如下所示:

return this.http.get(`/users/${id}/roles`)
    .map(response => response.json().map(x => UserRole[x]));
}

如果您收到 Typescript 错误,您可能需要先转换json结果,如下所示:

return this.http.get(`/users/${id}/roles`)
    .map(response => (<string[]>response.json()).map(x => UserRole[x]));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Ruby:将字符串数组映射到数组数组

将字符串数组映射到单个数组

将字符串数组映射到特定对象数组

将 PIN 映射到字符串数组和从字符串数组映射

使用AutoMapper将字符串数组映射到对象

将字典映射到数组到字符串

Python-将字符串映射到布尔数组

如何将字符串数组映射到新的字符串数组?

根据其他数组值将字符串映射到数组的最佳方法

Dataweave-将多个字符串数组映射到单个数组

如何 Java 将多个条件从 int 数组映射到字符串数组

将字符串数组映射到 JavaScript 中的 json 对象

将字符串数组映射到React-Native / ES6中的组件状态

从可观察数组映射到不同的字符串数组

一致地将字符串映射到数组索引(哈希函数)

将字符串数组映射到对象键并获取值

使用Jackson将JSON字符串数组映射到List <String>

将 object.keys 从对象数组映射到字符串

使用Object.keys将数组错误映射到字符串(javascript)

Kotlin将&减少字符串数组映射到Map <String,Any!>

将包含字符串数组的Gremlin结果映射到包含简单字符串属性的C#类

使用AutoMapper将字符串映射到枚举

Json用字符串和数组映射到

枚举值字符串中的枚举数组

将布尔值映射到字符串

如何将字符串映射到 RGB 值?

将枚举的每个数组值映射到枚举值

将dataframe列中的字符串映射到数值

如何键入映射到对象的字符串数组,其中键及其值是数组值