簡體   English   中英

異步其他/ Angular不能按預期工作

[英]async else / Angular is not working as expected

我有如下所示的代碼。 ngIf用例上運行正常。 但這與else用例有關。 也就是說,它顯示了其他部分,並且突然消失了,沒有任何observable變化。 換句話說,數據沒有變化。 你能告訴我為什么嗎? 如何避免呢?

這是現在的行為:

在此處輸入圖片說明

html

 <ion-list radio-group [(ngModel)]="budgetGroup" *ngIf="budgetGroups$ | async; let bg;else loading">
        <ion-item-sliding *ngFor="let b of bg | orderByBudgetGroup">
          <ion-item>
            <ion-label>{{b.name }}</ion-label>
            <ion-radio [value]="b.id" (ionSelect)="selectedBudgetGroup(b)"></ion-radio>
          </ion-item>
          <ion-item-options side="right">
            <button ion-button (click)="editBudgetGroup(b)" color="primary">
              <ion-icon name="ios-create-outline"></ion-icon>
            </button>
            <button ion-button (click)="deleteBudgetGroup(b)" color="danger">
              <ion-icon name="ios-trash-outline"></ion-icon>
            </button>
          </ion-item-options>
        </ion-item-sliding>
        <ion-item>
        </ion-item>
      </ion-list>

     <ng-template #loading>
        <ion-grid>
          <ion-row class="header">
          </ion-row>
          <ion-row class="footer">
            <ion-col col-12 class="font-size-14" text-center>
              <div>
                <P class="margin-bottom-0">No Budget Group. You can create them by </P>
                <p class="margin-top-0">tapping the “+” button above</p>
              </div>
            </ion-col>
          </ion-row>
        </ion-grid>
      </ng-template>

.ts

budgetGroups$: Observable<BudgetGroup[]>;budgetGroup: string;

 ionViewDidLoad() {
    this.budgetGroups$ = this.budgetGroupProvider.getAllBudgetGroups().valueChanges();
 }

服務

  getAllBudgetGroups(): AngularFirestoreCollection<BudgetGroup> {
    return this.budgetGroupCollectionRef = this.fireStore.collection(`userProfile/${this.userId}/budgetGroup`);
  }

budgetGroups將返回一個空數組,即使顯示為[] *ngIf如果不對空數組進行破解,那么您需要檢查返回的內容是否為空。

<ion-list radio-group [(ngModel)]="budgetGroup" 
*ngIf="(budgetGroups$ | async)[0]; let bg;else loading">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM