Используя ngrx, я получаю два набора данных из хранилища.
private getCatalog() {
this.catalogStore.select(CatalogStoreSelectors.selectAllCatalogsLoadSuccess)
.pipe(
takeWhile(() => this.alive),
take(1),
filter(loadSuccess => !loadSuccess),
tap(() => this.catalogStore.dispatch(new CatalogStoreActions.LoadAllAction())),
).subscribe();
this.catalogs$ = this.catalogStore.select(CatalogStoreSelectors.selectAllCatalogs);
}
catalog$
будет Observable<ViewCatalog[]>
Это первый набор данных.
вид-catalog.ts
export declare class ViewCatalog {
code: string;
title: string;
lastModified: string;
}
Также для каждого из catalog
вы можете запросить его пункты по catalog code
private getCatalogItems(catalogCode: string) {
this.catalogStore.dispatch(new CatalogStoreActions.GetCatalogItems({catalogCode: catalogCode}));
this.catalogItemsStore.select(CatalogItemStoreSelector.selectLoadingByCatalogSuccess)
.pipe(
takeWhile(() => this.alive),
take(1),
filter(loadSuccess => !loadSuccess),
tap(() => this.catalogItemsStore.dispatch(new CatalogItemStoreAction.LoadByCatalog({catalogCode: catalogCode}))),
).subscribe();
this.catalogItems$ = this.catalogItemsStore.select(CatalogItemStoreSelector.selectByCatalogCode(catalogCode));
}
Это второй набор данных.
public catalogItems$: Observable<CatalogItem[]>;
CatalogItem.ts
export class CatalogItem {
constructor(public code: string,
public catalogCode: string,
public title: string,
public data: object) {
}
}
Мне нужно объединить все эти данные в один общий плоский список, который будет выглядеть примерно так:
[
catalog: {
code: "Code 1",
title: "Catalog title 1",
lastModifie": "",
parent: null,
hasChildren: true
}
catalog-item: {
code: "CatalogItem 1",
catalogCode: "Code 1",
parent: "Code 1",
hasChildren: false,
title: "CatalogItem title 1"
},
catalog-item: {
code: "CatalogItem 2",
catalogCode: "Code 1",
parent: "Code 1",
hasChildren: false,
title: "CatalogItem title 2"
},
catalog: {
code: "Code 2",
title: "Catalog title 2",
lastModifie": "",
parent: null,
hasChildren: true
},
catalog-item: {
code: "CatalogItem 1",
catalogCode: "Code 2",
parent: "Code 2",
hasChildren: false,
title: "CatalogItem title 1"
},
catalog-item: {
code: "CatalogItem 2",
catalogCode: "Code 2",
parent: "Code 2",
hasChildren: false,
title: "CatalogItem title 2"
},
]
Может ли кто-нибудь помочь достичь этого?