【发布时间】:2018-10-19 16:39:17
【问题描述】:
我有一个向孩子提供信息的选择器。选择器工作并且子组件构建正确但是,我想订阅父组件中的选择器并将信息用于不同的任务,但订阅返回一个未定义的值。谁能指出我哪里出错了?
代码:
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
【问题讨论】:
-
试试:
if (this.position$ !== undefined) {...} -
您尝试创建订阅...但您立即取消订阅。尝试取消订阅您的 ngOnDestroy 或使用 rxjs 方法,例如 take(x)
-
两者都有效,但位置的值未定义,这就是问题所在。为什么我的选择器有效,但订阅返回一个未定义的值?
标签: angular typescript ngrx subscription