当前位置: 代码迷 >> JavaScript >> 如何在没有代理的情况下为Observable对象中的未定义键设置默认值?
  详细解决方案

如何在没有代理的情况下为Observable对象中的未定义键设置默认值?

热度:46   发布时间:2023-06-07 17:56:18.0

我有一个可观察的

someObjs$ = this.getData().pipe(
    map((data: Data) => ({
        a: true,
        b: true,
        c: true,
      })
    ),

如果用户在某处设置的标志为false,那么即使将Observable展开到模板中后,即使该键不存在,我也希望始终将其返回true。

例,

someObj$ | async as obj

{{ obj['d'] }} // true

我不确定是否要使用任何键( obj['foo']obj['bar']或预定义键obj['d']但我假设使用预定义键。

您可以在pipe方法中使用startWith运算符。 创建一个新的Data实例,并使用spread( ... )运算符分配d属性。

const newData = new Data();

someObjs$ = this.getData().pipe(
    startWith({...newData, d: true}),
    map((data: Data) => ({
        a: true,
        b: true,
        c: true,
      })
 )

或者在Data类中,您可以分配默认值。 然后,您将不需要传播运算符。 您可以将startWith与默认Data实例一起使用。