嵌套Angular2异步管道如何解析?
我对angular2模板中嵌套异步管道的解析方式和解析时间感到有点困惑,而文档目前还不是很好,所以我希望so上的人能提供帮助 我有一个从服务返回的非常简单的Rxjs Observable,通过嵌套Angular2异步管道如何解析?,angular,Angular,我对angular2模板中嵌套异步管道的解析方式和解析时间感到有点困惑,而文档目前还不是很好,所以我希望so上的人能提供帮助 我有一个从服务返回的非常简单的Rxjs Observable,通过Observable.of(myArray).delay(2000)-延迟是用来帮助显示时间的变化 在我的模板中,我只是在上面返回的observable上使用一个异步管道,在一个封闭的标记中控制它何时显示,然后尝试在该标记中显示返回的数组长度: <p *ngIf="!(lists | async)"&
Observable.of(myArray).delay(2000)
-延迟是用来帮助显示时间的变化
在我的模板中,我只是在上面返回的observable上使用一个异步管道,在一个封闭的
标记中控制它何时显示,然后尝试在该标记中显示返回的数组长度:
<p *ngIf="!(lists | async)">Waiting for lists...</p>
<p *ngIf="lists | async">We have lists! How many? => {{(lists | async)?.length}}</p>
等待列表
我们有列表!有多少?=>{{(列表|异步)?.length}
因此,当您加载此文件时,将显示“等待列表”,2秒后,我们将获得“we have lists!”部分,正如预期的那样,但内部异步管道需要另外2秒才能解析和显示解析的数组长度
我如何才能获得长度,使其与依赖于可观察对象返回其值的所有其他对象同时显示?或者这不是异步管道的一个好用例,我应该在我的组件中使用subscribe()
?异步管道很好。这个问题还牵涉到另一件事
检查指令源代码
当条件为true时,它将视图嵌入到视图容器中
this._viewContainer.createEmbeddedView(this._templateRef);
文件
基于templateRef实例化嵌入式视图,并将其插入到指定索引处的容器中
基本上,它接受NgIf中的任何内容,实例化它并将其放入DOM中
当条件为false时,它将从DOM中删除所有内容,并清除其中的所有视图
this._viewContainer.clear();
文件
销毁此容器中的所有视图
既然我们知道NgIf的作用,为什么你会看到这种行为?简单,我将分步骤进行解释
等待列表…
:此时列表
结果尚未到达,因此执行此操作
我有类似的问题,但有两个不同的观测值。为了使其正常工作,我将*ngIf=“list | async”
替换为[隐藏]=“!(list | async)
。这将在DOM中保留元素并更新数据。谢谢-这很有意义。在我的observable上使用delay()
,让我进一步了解*ngIf
的工作原理:)也许还需要指出的是,源observable没有以任何方式共享这一事实也起到了重要作用。在原始场景中,列表
可观察到的数据流被订阅两次(一次用于ngIf
,然后用于长度
),并且在每次订阅时,流都会重新启动,包括延迟。若列表
被共享、重播或热处理,则第二次订阅将立即找到最终数组值,而不会产生新的延迟。
*ngIf="lists | async"
----(2 seconds)----->
(lists | async)?.length
------(2 seconds)----->
print value