Подписка на селектор возвращает неопределенный - PullRequest
0 голосов
/ 09 мая 2018

У меня есть селектор, который передает информацию ребенку. Селектор работает, и дочерний компонент построен правильно, однако я хотел подписаться на селектор в родительском компоненте и использовать информацию для другой задачи, но подписка возвращает неопределенное значение. Кто-нибудь может указать, где я иду не так?

Код:

size: any;
mySubscription: Subscription;

constructor(
    private AppStore: Store<Store.NewState>
  ) { }

  ngOnInit() {
       this.position$ = this.AppStore.select(positionSelectors.selectPositionState);
       if (!this.position$ === undefined) {
         this.mySubscription = this.position$.subscribe((resp) => {
         this.size = Object.keys(resp).length;
        } );
        this.mySubscription.unsubscribe();
       }
  }

Таким образом, я пытаюсь получить длину ответа, однако ничто не выходит за рамки условного. Если я удаляю его, я получаю кучу ошибок, утверждающих, что объект не определен. Конкретная ошибка:

TypeError: Cannot convert undefined or null to object

1 Ответ

0 голосов
/ 09 мая 2018

первопричина,

Отрицание перед! This.position $, которое становится ложным, тогда вы строго проверка его с неопределенным, который никогда не будет идти внутрь, если блок, потому что он всегда оценивает его как ложное

В качестве комментария, пожалуйста, используйте жизненный цикл ngOnInit & ngOnDestroy. Пожалуйста, проверьте фрагмент кода ниже

ngOnInit() {
  this.position$ = this.AppStore.select(positionSelectors.selectPositionState);
  if(!this.position$) this.mySubscription = this.position$.subscribe(() => console.log("Logic Here"));
}

ngOnDestroy() {
  if(this.mySubscription) this.mySubscription.unSubscribe();
}
...