Есть функция принимающая массив объектов:
setDefault(defaultFilters: Filter[]) {
this.defaultFilters = defaultFilters;
}
Где,
Filter это класс:
export class Filter implements FilterModel {}
Как склонировать объект
defaultFilters?
Пробовал так:
this.defaultFilters = {...defaultFilters};
Но это не работает для объектов классов.
Полный код:
export abstract class FiltersRepository {
public _filters: Filter[] = [];
private filtersResponse: Filter[] = [];
public filters$ = new Subject<Filter[]>();
private filterUrlBuilder = new FilterUrlBuilder();
private changes$ = new BehaviorSubject<string>(null);
private default: Filter[];
abstract init();
setDefault(defaultFilters: Filter[]) {
this.default = defaultFilters.slice();
this._filters = defaultFilters;
}
modifyDefault() {
this._filters.forEach((_filter) => {
this.filtersResponse.forEach((responseFilter) => {
if (_filter.title === responseFilter.title) {
if (Array.isArray(responseFilter.collection) && responseFilter.collection.length) {
_filter.collection = responseFilter.collection;
}
}
});
});
}
reset() {
console.log(this.default);
this._filters = this.default;
this.filter();
}
}
Первым делом вызываю метод
setDefault и передаю дефолтные фильтры. Далее вызываю
modifyDefault который модицицирует дефолтный фильтр на значения из БД.
Поэтому пытаюсь сделать клон дефолтный фильров чтобы иметь возможность их восстановления в методе
reset()