Angular中多个相同的异步管道导致多个http请求

哈姆扎·哈达德(Hamza Haddad)

在我的角度应用程序中,我使用异步管道多次渲染组件

<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请求。

如何仅使用一个请求?

al

方法1

您可以使用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>

方法3

您可以将其包装在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>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章