Как получить данные в дочерних компонентах с помощью Angular 9 и NGRX?

Я создаю проект с Angular 9 и NGRX, и у меня есть следующий компонент страницы:

@Component({
  template: `
    <div *ngFor="let post of posts$ | async">
      {{ post.name }}
    </div>
    <top-posts></top-posts>
  `
})
export class PostsPageComponent {

  posts$: Observable<Post[]> = this.store.select(state => state.posts);

  constructor(private store: Store<{ posts: Post[] }>) {}

  ngOnInit() {
    this.store.dispatch({ type: '[Posts Page] Load Posts' });
  }

}

В этом компоненте у меня есть дочерний компонент, который отображает TopPosts.

Я считаю, что мне нужно добавить topPosts: Post[] в свой магазин и действие «[Страница сообщений] Загрузить самые популярные сообщения».

Но как мне получить доступ к этим данным в моем дочернем компоненте?

  1. Должен ли я ввести хранилище в дочерний компонент и использовать:

     this.store.dispatch({ type: '[Posts Page] Load Top Posts' });
    
  2. Должен ли я передавать данные из PostPageComponent в TopPostsComponent?

    Как? И в этом случае следует ли мне изменить действие на «[Компонент популярных сообщений] Загрузить основные сообщения»?


person Miguel Moura    schedule 09.06.2020    source источник


Ответы (1)


На мой взгляд, вы можете отправлять действия для своих дочерних компонентов в родительский компонент и передавать результат как @Input своим дочерним компонентам.

Таким образом, ваш дочерний компонент не должен иметь никакой зависимости от хранилища и может действовать как презентационные компоненты.

person user3929590    schedule 09.06.2020