angular - 行为主体的角度/rxjs对象不返回值
问题描述
我有一个商店服务,其中包含一个带有行为主题的对象,因此商店可以轻松增长和缩小。但是由于某种原因,使用这种方法我无法像往常一样使用 .value 访问器从 BehaviourSubject 获取值。
我可以像往常一样订阅主题,结果是正确的。
private listStore: any = {};
public getList<T>(key: string): GraphResponse<T> {
if (this.listStore[key]) {
return this.listStore[key].value; <--- This returns null event when there is a value there
} else {
return null;
}
}
public list$<T>(key: string): Observable<T> {
if (!this.listStore[key]) {
this.listStore[key] = new BehaviorSubject<T>(null);
}
return this.listStore[key].asObservable(); <-- Subscribing to this at the same time works fine
}
我尝试添加超时来测试 setter 是否可能比 getter 慢,并且它仍然返回 null。
控制台显示主题已按您的预期填充:
类别:BehaviorSubject {_isScalar:false,观察者:Array(0),关闭:false,isStopped:false,hasError:false,...} 实体:BehaviorSubject {_isScalar:false,观察者:Array(1),关闭:false,isStopped:假,有错误:假,...}
使用上述对象的示例:
我的商店里目前有这个对象:
let store = {
test: new BehaviorSubject('testing 1 2 3'),
another: new BehaviorSubject('another test!')
}
现在,如果我这样做:
store.test.subscribe().... 它工作正常,我可以得到价值
但是,这样做:
store.test.value 返回 null
这只有在有一个行为对象的情况下才会发生
解决方案
推荐阅读
- android - Google Play 商店拒绝默认短信应用
- angular - 浏览器刷新时,分段的角度路由失败
- c++ - C++ 使用带有前向声明的成员函数
- c++ - 带大括号初始化的 make_unique
- java - 在java中将窄表转换为宽表
- abap - FPM - WD - LPD:POWL 作为 Listpopup 选择一条记录然后返回它
- php - 用 PHP 读取 xls 文件的最简单方法
- angular - 修改数组对象的 Observable 内容
- git - `git commit --amend -F file`之后的`git-review` - 一个新的评论?
- reactjs - 我应该为 createBrowserHistory 提供一个单独的 history.js 吗?