Перерисовать HTML при обновлении магазина - NGXS - PullRequest
0 голосов
/ 24 апреля 2019

Я использую ngxs .. Состояние хранилища обновляется, и я получаю значения по мере необходимости, но я также хочу повторно выполнить рендеринг HTML снова, когда значение хранилища обновлено.

Прямо сейчас мой код говорит

this.store$ = this.store.select(state => state.departments.departments);

как только отделы обновляются, мне нужен мой компонент для повторного рендеринга HTML. Я сделал это как

<ng-container *ngIf="state$ | async">
    <router-outlet></router-outlet>
</ng-container>

Значения отражаются, но HTML не отображается. Я тоже пробовал

cdr.detectChanges(); or cdr.markForCheck()

но без удачи Или моя потребность не будет удовлетворена магазином?

1 Ответ

1 голос
/ 24 апреля 2019

Попробуйте это:

this.store$.subscribe(cdr.markForCheck);

Это гарантирует, что всякий раз, когда изменяется значение $ observable, Angular будет запускать обнаружение изменений в вашем компоненте и соответствующим образом обновлять представление.

Другой способ сделать это - обозначить store $ как свойство @Input (). Поскольку Angular непрерывно контролирует все входные свойства компонентов, даже если для changeDetectionStrategy установлено значение «onPush».

...