Я пытаюсь реализовать Angular Observable Data Services в своем коде, но меня немного смущает такой подход.
У меня следующая модель данных: Тема --- один-ко-многим ---> Категория
Тема
export class Theme {
_id: string;
name: string;
description: string;
iconCode: string;
categories: Category[];
createdAt: Date;
updatedAt: Date;
Категория
export class Category {
_id: string;
name: string;
description: string;
createdAt: Date;
updatedAt: Date;
Я написал этот код для службы наблюдаемых данных темы:
export class ThemeStoreService {
private _themes: BehaviorSubject<Theme[]> = new BehaviorSubject<Theme[]>([]);
private dataStore: {
themes: Theme[]
};
constructor(private themeBackendService: ThemeBackendService) {
this.dataStore = { themes: [] };
this._themes = new BehaviorSubject<Theme[]>([]);
}
get themes() {
return this._themes.asObservable();
}
И мне интересно, как писать Службу наблюдаемых данных категории, которая связана с Темой. В моем проекте я использую панель навигации, которая представляет собой список, тему, содержащую подсписок категорий. Я хочу обновить список и подсписок после создания новой категории.
Ниже мой фактический код для службы наблюдаемых данных категории:
export class CategoryStoreService {
private _categories: Observable<Category[]>
private dataStore: {
categories: Category[]
};
constructor(private themeStoreService: ThemeStoreService) {
this.dataStore = { categories: [] };
this._categories = this.themeStoreService.themes.pipe(
map(themes => {
themes.forEach(theme => {
theme.categories = this.dataStore.categories;
})
})
)
}
get categories() {
return this._categories;
}
Есть отзывы или примеры, которые могут мне помочь?
Заранее спасибо за вашу помощь.





Вы возвращаете _themes как наблюдаемый, который является новым экземпляром типа BehaviorSubject<Theme[]>, и когда вы получаете его в теме, он становится типа BehaviourSubject<Theme[]>, затем вы выполняете некоторое присвоение его части категории, но в целом тема остается с типом BehaviourSubject<Theme[]>. Но когда вы назначаете его this._categories типа Observable<Category[]>, это несоответствие.
Для решения вы можете вернуть _themes.categories или получить темы вместо _categories.
Надеюсь, из-за этого возникает несоответствие шрифтов.