Мне нужно преобразовать свойство Set<string>
в json и наоборот, но оказывается, что оно не работает из коробки в Angular.
То, что я хочу получить, - это когда у меня есть свойство json, например: roles: ['role1', 'role2']
Мне нужно преобразовать его в свойство машинописи, например: roles: Set<string>;
.
Вопрос: Как преобразовать массив json в Set и наоборот в Angular без использования внешних библиотек? Если это невозможно: как добиться этого более изящным способом, тогда у меня есть сейчас.
Как мне это сделать прямо сейчас:
Я использую комбинацию HttpClient
call и class-transformer lib call следующим образом:
export class User {
@Transform(value => new Set(value))
roles: Set<string>;
// some other properties
toJSON() {
let result: any = {};
for (let property in this) {
let field: any = this[property];
if (field instanceof Set) {
result[property] = Array.from(field);
} else {
result[property] = field;
}
}
return result;
}
}
затем в http вызов:
his.http.get<User>(url)
.map(res => plainToClass(User, res));
Откуда @Transform
и plainToClass
происходят от класс-трансформатор .
Хорошо работает, но я бы хотел избавиться от этого кода.