我尝试在我的代码中实现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;
我为主题的Observable Data Service编写了以下代码:
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;
}
有任何反馈或示例可以帮助我吗?
预先感谢您的帮助。
答案 0 :(得分:0)
您将_themes返回为可观察的_themes,它是类型为BehaviorSubject<Theme[]>
的新实例,当您在主题中收到该主题时,它的类型为BehaviourSubject<Theme[]>
,则需要对其类别部分进行一些分配但总体而言,主题仍为BehaviourSubject<Theme[]>
类型。但是,当您将其分配给类型为Observable<Category[]>
的this._categories时,这是不匹配的。
对于解决方案,您可以返回_themes.categories或接收主题而不是_categories。
我希望这一定是造成类型不匹配的原因。