我正在使用NGXS更新加载状态,并且状态正在正确更新,但是我面临的一个问题是
如何在模板的多个位置使用加载状态?
NGXS选择器如下所示:
>>> A = B = []
>>> C = A
>>> C.append(0)
>>> A
[0]
>>> B
[0]
>>> C
[0]
>>> B.append(1)
>>> A
[0, 1]
>>> B
[0, 1]
>>> C
[0, 1]
现在我的模板中有一个需要禁用的按钮,并且在分派操作时应在按钮中显示加载程序。我尝试如下,但没有用。按钮没有被禁用。
@Select(MyAppState.isLoadingLayouts) loading$: Observable<boolean>;
我认为我们不能在模板中多次使用<button mat-raised-button class="gec-button" (click)="getLayoutsData()" [disabled]="loading">
<ng-container *ngIf="loading$ | async as loading; else submit">
<app-progress-bar [diameter]="16"></app-progress-bar>
</ng-container>
<ng-template #submit>Submit</ng-template>
</button>
,因为它会触发多个异步调用。
有没有一种方法可以实现单个异步管道?
答案 0 :(得分:1)
好的。您只需要share
在订阅者之间可观察到:
public getSharedLoading$() {
return this.loadging$.pipe(share());
}
*ngIf="getSharedLoading$ | async as loading; else submit"
答案 1 :(得分:0)