Переменная не обновляется в шаблоне при установке внутри метода подписки - PullRequest
0 голосов
/ 17 мая 2019

У меня есть наблюдаемая переменная, которая получает свое значение из магазина.У меня есть метод подписки для прослушивания обновлений.В нем я пытаюсь присвоить регулярной переменной одно из значений наблюдаемой переменной.Я консольный журнал, чтобы увидеть, если он был обновлен, и он имеет, но значение не обновляется в шаблоне.

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

Я также пробовал с

this.cdr.detectChanges();

, и это работает, но это кажется хакерским и излишним для чего-то такого простого.Также на всякий случай, если кому-то интересно, у моего компонента нет

ChangeDetectionStrategy=OnPush

.

Вот как инициализируется переменная.

this.filters$ = this.store.let(getListsContactsFilters());  

Так выглядит подпискакак.

this.filters$.subscribe((filters) => {
   this.selectedAreas = filters.selectedAreas;
});  

Затем я делаю это в шаблоне

<div *ngFor="let area of selectedAreas">
  <h1>{{area.title}}</h1>
</div>

Я также попытался распечатать выбранные области в шаблоне:

{{selectedAreas | json}}

, и это остаетсяпустой массив даже после запуска функции подписки.

Действительно супер просто, так что бог знает, почему это не работает.

Я ожидаю, что this.selectedAreas будет иметь значение filters.selectedAreas в шаблоне.Что, кстати, и массив объектов.

1 Ответ

0 голосов
/ 17 мая 2019

У меня была такая же проблема, дело в том, что Angular не может обнаружить изменения за пределами своей области (в данном случае ngRx).Я думаю, что вы не сможете заставить его работать без этого оператора detectChanges.Это не излишество, это то, как работает angular.

Вот ссылка на мой вопрос:

Angular 5 ngOnChanges срабатывает только один раз в дочернем компоненте

...