我有一个选择器,可以将信息提供给孩子。选择器工作,子组件正确构建,但是,我想订阅父组件中的选择器,并使用不同任务的信息,但订阅返回一个未定义的值。任何人都可以指出我哪里错了吗?
代码:
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
答案 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();
}