对于如何以及何时在angular2模板中嵌套异步管道解决问题,以及文档现在不在很好的位置,我很困惑,所以我希望SO上的某个人能够提供帮助。嵌套的Angular2异步管道如何解决?
我有一个非常简单的Rxjs Observable从服务返回,通过Observable.of(myArray).delay(2000)
- 延迟是有帮助显示正在进行的时间。
在我的模板,我只是用在观察到在封闭<p>
标签以上恢复控制的异步管道时,将显示它,然后试图表明<p>
标签内返回数组长度:
<p *ngIf="!(lists | async)">Waiting for lists...</p>
<p *ngIf="lists | async">We have lists! How many? => {{(lists | async)?.length}}</p>
所以,当你加载这个了,“等待名单”显示,2秒后,我们得到了“我们列出了!”如预期的那样,但内部异步管道需要花费另外2秒才能解析并显示已解析的数组长度。
如何根据Observable返回的值同时显示与其他所有内容相同的显示长度?或者这对于异步管道来说不是一个好用例,我应该在组件中使用subscribe()
而不是?
谢谢 - 有道理。在我的observable上使用'delay()'可以让我更深入地了解'* ngIf'如何工作:) – chucknelson
也许有必要提一下,源观察值不以任何方式共享*好。在最初的场景中,'lists' observable被订阅两次(一次用于'ngIf',然后用于'length'),并且在每个订阅上流重新开始,包括延迟。如果'lists'被共享,重播或者变热,第二次订阅会马上找到最终的数组值,而不会有新的延迟。 – superjos