![](/img/trans.png)
[英]How to make my javascript function wait for a html element to render
[英]wait forkjoin to render html
我有2個呼叫的forkjoin
。 在html
,我需要等到forkjoin
的響應到達。 有什么辦法可以使用async
管道嗎? 我在另一篇文章中讀到, async
僅適用於observables
和promises
。 我嘗試使用*ngIf
來執行此*ngIf
,但是它不起作用。 提前致謝
TS
var1: string;
var2: string;
forkJoin(
this.call1(),
this.call2()
).subscribe(([res1, res2]) => {
this.var1 = res1;
this.var2 = res2;
}, err => console.log(err));
HTML
<div class="col">
<label class="labelEsp">Var 1:</label>
<span class="spanEsp uppercase" >{{ var1 }}</span>
</div>
<div class="col">
<label class="labelEsp"> Var 2:</label>
<span class="spanEsp" >{{ var2 }}</span>
</div>
您可以繼續在typescript
使用訂閱,並使用標志在視圖中隱藏和顯示HTML。
這樣的事情會做:
dataReady = false;
forkJoin(
this.call1(),
this.call2()
).subscribe(([res1, res2]) => {
this.var1 = res1;
this.var2 = res2;
},
(err) => console.log(err),
() => {
this.dataReady = true
// complete block
}
);
<ng-container *ngIf="dataReady else loading">
<div class="col">
<label class="labelEsp">Var 1:</label>
<span class="spanEsp uppercase" >{{ var1 }}</span>
</div>
<div class="col">
<label class="labelEsp"> Var 2:</label>
<span class="spanEsp" >{{ var2] }}</span>
</div>
</ng-container>
<ng-template #loading>
loading...
</ng-template>
如果要使用async
管道本身來執行此操作,則可以執行以下操作:
data = forkJoin(
this.call1(),
this.call2()
)
<ng-container *ngIf="data | async as resolvedData else loading">
<div class="col">
<label class="labelEsp">Var 1:</label>
<span class="spanEsp uppercase" >{{ resolvedData[0] }}</span>
</div>
<div class="col">
<label class="labelEsp"> Var 2:</label>
<span class="spanEsp" >{{ resolvedData[1] }}</span>
</div>
</ng-container>
<ng-template #loading>
loading...
</ng-template>
在此處查看示例: https : //stackblitz.com/edit/angular-uwpwya?file=src%2Fapp%2Fapp.component.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.