Наблюдаемые сервисы данных с отношением один ко многим - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь внедрить 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();
  }

И я задаюсь вопросом о написании Службы Наблюдаемых Данных Категории, которая связана с Темой.В моем проекте я использую панель навигации, которая представляет собой список тем, содержащих подсписок категорий.Я хотел бы обновить список и подсписок после создания новой категории.

  • Нужно ли мне также использовать BehaviorSubject для категории?
  • Как мне это сделать?связь между этими двумя объектами?

Ниже приведен мой действительный код для Службы наблюдаемых данных категории:

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;
  }

Любой отзыв или пример, чтобы помочь мне?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 23 июня 2018

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

Надеюсь, это должно привести к несоответствию типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...