等待 forkjoin 渲染 html
wait forkjoin to render html
我有一个 forkjoin
有 2 个电话。在 html
中,我需要等到 forkjoin
的响应到达。有什么办法可以用 async
管道吗?我在另一个 post 中读到 async
仅适用于 observables
和 promises
。我试着用 *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
我有一个 forkjoin
有 2 个电话。在 html
中,我需要等到 forkjoin
的响应到达。有什么办法可以用 async
管道吗?我在另一个 post 中读到 async
仅适用于 observables
和 promises
。我试着用 *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