Есть массив объектов
appReferenceData: AppReferenceData[] = [];
Каждый объект объект вида
export class AppReferenceData {
public id: string;
public value: string;
public _is_actual: boolean;
constructor(id: string, value: string, _is_actual: boolean) {
this.id = id;
this.value = value;
this._is_actual = _is_actual;
}
}
но в json ответе от сервера содержатся объекты, имеющие
"id":"d5387a86-faa7-4ac3-bc50-ff187a22860f","value":"asfgh12","_is_actual":true,"_user_ip":null,"_user_login":null,"_user_browser":null
и т.д.
Вобщем для каждого объекта нужно выбрать только часть полей, записать в объект и сам объект в массив.
Я пробовал так:
this.appReferenceService.GetAppReferenceData(this.selector).subscribe(((res: AppReferenceData[]) => this.appReferenceData = res));
this.appReferenceService.GetAppReferenceData(this.selector).subscribe(res => this.appReferenceData = res as AppReferenceData[]);
Кидает ошибку Error trying to diff 'too many bla bla' Only arrays and iterables are allowed
(В Angular 5 больше нет .json())
Можно конечно написать
this.appReferenceService.GetAppReferenceData.subscribe(res => this.appReferenceData = JSON.parse(res.toString()));
Но может есть более красивый/правильный способ? Почему ангулар не может автоматически вытащить и записать только нужные данные, просто отбросив лишнее?
Этот пример искусственный, на самом деле есть объект в котором 20+ полей а в Json прилетает 30+, поэтому перечислять каждое не вариант