Как получить вещи из магазина ngrx в угловом компоненте - PullRequest
0 голосов
/ 14 июня 2019

У меня есть этот фрагмент кода внутри компонента:

    ngDoCheck(){
    this.store.select('info').pipe(map((val: Info) => {
        window.alert(val.user.name);
        this.user.name = val.user.name;
    }));
}

Сначала я хотел бы убедиться, что это не соответствует наблюдаемой и вместо этого проверяет значение асинхронно, как я думал.

Во-вторых, я хотел бы знать, почему он не работает, используя отладчик, я вижу, что val не определен, но в хранилище хранится свойство, поэтому свойство хранится в хранилище, но этот код не достигает его.

Я также вижу, что код внутри карты никогда не достигается. Благодарю. Любая помощь приветствуется. Хорошего дня.

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Стандартным способом является подписка на магазин и отмена подписки, когда это будет сделано.

storeSubscription: Subscription;

ngOnInit() {
  this.storeSubscription = this.store.select('info').subscribe(info => {
    window.alert(info.user.name);
    this.user.name = info.user.name;
  });
}

ngOnDestroy() {
  this.storeSubscription.unsubscribe();
}

Используя Subscription, мы гарантируем, что магазин подписан на определенный его фрагмент ('info')поэтому о любых изменениях в этом срезе ваш компонент будет уведомлен.Мы также должны отписаться, чтобы освободить ловушку, когда она не используется, чтобы избежать ненужного использования памяти.

0 голосов
/ 14 июня 2019

Вы должны подписаться, чтобы иметь возможность прослушивать изменения состояния, и вам не нужно принудительно печатать, потому что, если вы правильно ввели «InfoState», наследование ts даст вам правильный тип внутри подписки

this.store.select('info').subscribe(info => {
    window.alert(info.user.name);
    this.user.name = info.user.name;
});
...