在我的 angular 应用程序中,我使用异步管道多次渲染组件
<app-main-chart [type]="type" [name]="Name" [values]="values$ | async" [objectifs]="dataObjectifs"></app-main-chart>
...
...
<app-main-chart [type]="type" [name]="Name" [values]="values$ | async" [objectifs]="dataObjectifs"></app-main-chart>
Run Code Online (Sandbox Code Playgroud)
问题是导致多个http请求。
如何只使用一个请求?
您可以使用shareReplay运算符。
共享源并重播指定数量的订阅。
import { shareReplay } from 'rxjs/operators';
values$ = source
.pipe(
shareReplay()
);
Run Code Online (Sandbox Code Playgroud)
您可以在控制器中订阅并在模板中使用该值。
ngOnInit() {
this.values$.subscribe(values => this.values = values);
}
Run Code Online (Sandbox Code Playgroud)
然后在模板中:
<app-main-chart [type]="type"
[name]="Name"
[values]="values"
[objectifs]="dataObjectifs">
</app-main-chart>
Run Code Online (Sandbox Code Playgroud)
您可以将其包装在ngIf块中:
<div *ngIf="values$ | async as values">
<app-main-chart [type]="type"
[name]="Name"
[values]="values"
[objectifs]="dataObjectifs">
</app-main-chart>
<app-main-chart [type]="type"
[name]="Name"
[values]="values"
[objectifs]="dataObjectifs">
</app-main-chart>
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |