Javascript 角度:将字符串数组映射到http get调用中的枚举值数组
我的typescript代码中有一个枚举,列出了所有可能的用户角色:Javascript 角度:将字符串数组映射到http get调用中的枚举值数组,javascript,angular,typescript,enums,type-conversion,Javascript,Angular,Typescript,Enums,Type Conversion,我的typescript代码中有一个枚举,列出了所有可能的用户角色: enum UserRole { CONSULTANT, MANAGER, ... } 我有一个REST端点/users/id/roles,它返回表示特定用户角色的字符串数组: [ "CONSULTANT", "MANAGER", ... ] 现在我想在我的前端代码中映射这个数组。我是这样做的: import {Http} from '@angular/http'; impor
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()));
}
从'@angular/Http'导入{Http};
从“rxjs/Observable”导入{Observable};
从“类转换器”导入{plainToClass};
...
getUserRoles(id:string):可观察{
返回此.http.get(`/users/${id}/roles`)
.map(response=>plainToClass(UserRole,response.json());
}
但我得到:
错误TS2345:类型为“typeof UserRole”的参数不能分配给类型为“ClassType”的参数。
类型“typeof UserRole”与签名“new(…args:any[]):UserRole[]”不匹配
Q:有没有办法将字符串数组转换为枚举元素数组
注意:我正在使用Typescript 2.5.3。与Angular 5.0.5配合使用。一旦您使用
json
将其转换为对象,就可以对从服务器返回的数组使用map
,如下所示:
return this.http.get(`/users/${id}/roles`)
.map(response => response.json().map(x => UserRole[x]));
}
return this.http.get(`/users/${id}/roles`)
.map(response => (<string[]>response.json()).map(x => UserRole[x]));
}
如果出现Typescript错误,可能需要先转换json
结果,如下所示:
return this.http.get(`/users/${id}/roles`)
.map(response => response.json().map(x => UserRole[x]));
}
return this.http.get(`/users/${id}/roles`)
.map(response => (<string[]>response.json()).map(x => UserRole[x]));
}
返回this.http.get(`/users/${id}/roles`)
.map(response=>(response.json()).map(x=>UserRole[x]);
}