Angular HTTP Client: преобразовать json-массив в Set и наоборот - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужно преобразовать свойство 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 происходят от класс-трансформатор .

Хорошо работает, но я бы хотел избавиться от этого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...