订阅选择器返回Undefined

时间:2018-05-09 14:05:38

标签: angular typescript ngrx subscription

我有一个选择器,可以将信息提供给孩子。选择器工作,子组件正确构建,但是,我想订阅父组件中的选择器,并使用不同任务的信息,但订阅返回一个未定义的值。任何人都可以指出我哪里错了吗?

代码:

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();
       }
  }

所以我试图获得响应的长度,但没有任何东西使它超过条件。如果我删除它,我会收到一堆错误,指出Object未定义。 具体错误是:

TypeError: Cannot convert undefined or null to object

1 个答案:

答案 0 :(得分:0)

根本原因,

  

之前的否定!this.position $变为假,那么你是严格的   用undefined检查它,如果阻塞它将永远不会进入,因为它总是将它评估为false

如评论建议,请使用ngOnInit&amp; 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();
}