我所寻找的是类似BehaviorSubject<Object?>
的东西。不幸的是BehaviorSubject
抛出NullPointerExceptions
,即使类型是可空的。
根据文档,BehaviorSubject
不允许null
作为onNext
的参数。与ReplaySubject
一样,我已经看到建议作为BehaviorSubject
的替代品。
我在后端的BehaviorSubject
中存储了一个值,它需要是可观察的(由我前端的一些LiveData
),但它不是一个存在于所有示例的值,因此可以为空。
2条答案
按热度按时间s4n0splo1#
不能在
BehaviorSubject
中使用可空类型,这实际上是一件好事(有些人可能不同意)。我建议使用一个
sealed
类,而不是一个“空”和一个有效的子类,比如:这样就可以区分空(“null”)和可用状态。
因此,只需创建主题如下:
然后根据类型处理数据:
xn1cxnb42#
你的问题不是BehaviorSubject,而是类型。与流行的观点相反,Object?不是一个可空的对象,它是一个 * 可选 * 对象,其中的值可以是对象或未定义。
你想要的是这个:
或者,您可以在原始代码中使用undefined而不是null,这两种方法都可以工作。
你可以在这里读到更多:https://tutorialsforangular.com/2021/02/08/optional-vs-nullable-in-typescript-angular/