在我的角度应用程序中,我使用异步管道多次渲染组件
<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>
问题是导致多个http请求。
我怎么只能使用一个请求?
答案 0 :(得分:4)
您可以使用shareReplay
运算符。
共享来源并按订阅重播指定数量的排放。
import { shareReplay } from 'rxjs/operators';
values$ = source
.pipe(
shareReplay()
);
您可以订阅控制器并在模板中使用该值。
ngOnInit() {
this.values$.subscribe(values => this.values = values);
}
然后在模板中:
<app-main-chart [type]="type"
[name]="Name"
[values]="values"
[objectifs]="dataObjectifs">
</app-main-chart>
您可以将其包装在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>