У меня есть следующая структура объекта в хранилище Ngrx:
class Case {
id: string; // an id to uniquely identify the Case
type: string; // an id to identify the type of the Case
links: { [ type: string ]: string }; // a dictionary of links to the current Case.
// the keys are the type of the Case, and the values are the actual id's of the linked Cases.
// These linked cases are in the same store as the Parent Case
}
Я могу получить этот случай из хранилища с помощью метода getCase(caseId: string): Observable<Case>
из caseService
I необходимо создать метод, который принимает идентификатор дела и запрашивает хранилище для дела и всех его ссылок. Эти ссылки должны быть рекурсивно извлечены для всех связанных случаев.
Этот метод должен возвращать случай и все его ссылки в следующей структуре:
class CaseLinks {
case: Case;
links: { type: string, items: CaseLinks[] }[]
}
Значение Мне нужна сигнатура метода getCaseLinks(baseCaseId: string): Observable<CaseLinks>
. В любом случае, я могу запросить элемент из магазина и, основываясь на ссылках в деле, рекурсивно запросить хранилище для связанных случаев и вернуть результат всех Наблюдаемых в единый плоский наблюдаемый поток.
Ниже я добавил Stackblitz, содержащий небольшой пример варианта использования и того, чего я хочу достичь. Надеюсь, что это проясняет несколько вещей:
https://stackblitz.com/edit/angular-ovpgsh