【发布时间】:2019-12-09 21:10:46
【问题描述】:
当在 Angular 中使用不立即触发事件的异步管道时(http 请求或任何可观察到的延迟),第一个值为 null
为什么会这样?如何避免?
<hello [data]="delayedData$|async"> </hello>
第一个变化:
SimpleChange {
currentValue: null
firstChange: true
previousValue: undefined
}
第二次改变:
SimpleChange {
currentValue: 'some real data'
firstChange: false
previousValue: null
}
stackblitz 示例: https://stackblitz.com/edit/http-async-pipe-crxm32
【问题讨论】:
-
从
async管道的实现来看,这不是预期的行为吗? -
你可以简单地使用'startWith'运算符,就像你在你的observable中使用的那样,结果实际上是合乎逻辑的,因为observable不包含任何初始值,它打印null,试试operator startWith ,或者它是@Muhammed Albarmavi 在这里写下的变体(我建议使用 startwith),我知道您在现实生活中的代码中可能有很多复杂的数据结构,但是您也可以传递空数组空对象等
-
如果你深入研究实现——你可以期待它,但在官方 dos 中没有任何内容,恕我直言,这是非常奇怪的行为——我只期望我的 observable 中的值,没有副作用跨度>
标签: angular rxjs async-pipe