NGRX - подписка от дочернего компонента на app.component - PullRequest
0 голосов
/ 16 октября 2019

Мне нужно показать footercomponet на компоненте приложения условно на основе данных дочернего компонента. Я подписываюсь на обновление глобального хранилища компонента приложения, и когда дочерний компонент обновляет хранилище, я не вижу срабатывания подписки на компонент приложения. Я использую angular 6 ниже - это прототип кода для компонента приложения.

Code- AppComponent ->

public ngOnInit(): void {      
this.subscriptions.push(this.store.pipe(select(showFooterFun)).subscribe(showfooter => {
      this.showLegalFooter = showfooter;
    }));
}

Дочерний компонент - у меня есть дочерний компонент, обновляющий глобальное хранилище с логическим значением доПоказать Скрыть нижний колонтитул. Можно ли вызвать app.component подписку от ребенка, обновив глобальный магазин.

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Спасибо, timdeschryver, за ваш отзыв / предложение, высоко оценили, я не пробовал предложенный вами подход, но при дальнейшей отладке я заметил, что в моем случае из-за исключения в компоненте приложения ngOnInit подписка получалаотписаться, поставив нулевую проверку, я заметил, что это решено.

this.subscriptions.push(this.store.pipe(select(showLegalFooter)).subscribe(showfooter => {
  if (showfooter) { //null check resolved the issue
    this.showFooter = showfooter.showFooter; //earlier when showfooter was null //which lead to exception and the suscription got unsuscribe.
              }
}));
0 голосов
/ 16 октября 2019

Пожалуйста, не subscribe, это часто бывает, что некоторые вещи не работают. Вместо этого используйте встроенную трубку Angular async. Также убедитесь, что вы корректно изменяете свое состояние внутри редукторов.

// in typescript
showFooter$ = this.store.pipe(select(showFooterFun);

// in html
<div *ngIf="showFooter$ | async">
Footer
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...