Angular не обновляет View (redux, ionic ...)

У меня очень простая ионная страница. На этой странице отображается состояние Reduxstate. На этой странице у меня есть кнопка, с помощью которой я попадаю на другую страницу, и там я могу изменить состояние и вернуться обратно. Если я вернусь обратно, вид не будет обновляться. Я провел довольно много времени, исследуя, почему это не работает. К сожалению, безуспешно.

Составная часть

export class AssetDetailTechnicPage {
    @select(['asset', 'asset'])
    asset$: Observable<Asset>;
}

шаблон

<ion-content *ngIf="asset$ | async as asset">
    <!--Leistung für Systemeinheit-->
    <ion-card *ngIf="asset.assetSubKind.assetKindId === 2 && (asset.totalMemory || asset.hardDiskCapacity || asset.hardDiskTyp || asset.opticalDriveType
    || asset.bios || asset.displaySize || asset.cpu || asset.gpu)">
        <ion-card-header>
            <ion-icon name="build"></ion-icon> {{'PERFORMANCE' | translate}}
        </ion-card-header>
        <ion-card-content>
            <ion-label color="primary" *ngIf="asset.totalMemory">
                {{'MAIN_MEMORY' | translate}}:
            </ion-label> {{asset.totalMemory}}
            <ion-label color="primary" *ngIf="asset.hardDiskCapacity">
                {{'HDD_CAPACITY' | translate}}:
            </ion-label> {{asset.hardDiskCapacity}}
            <ion-label color="primary" *ngIf="asset.hardDiskTyp">
                {{'HDD_TYPE' | translate}}:
            </ion-label> {{asset.hardDiskTyp}}
            <ion-label color="primary" *ngIf="asset.opticalDriveType">


            {{'OPTICAL_DRIVE' | translate}}:
                </ion-label> {{asset.opticalDriveType}}
...... something similar goes on

Попробуйте выяснить:

  • Страница находится в ионной супер вкладке Компонент. Сначала я подумал, что это связано с плагином "Ионные супер вкладки". Я вынул его, и это не помогает
  • Может быть, это как-то связано с редуксом? Может статус не меняется? Может быть, этого не происходит в угловой зоне? Вот почему я переписал все это немного

    @select(['asset', 'asset'])
    asset$: Observable<Asset>;
    asset: Asset;
    
    constructor(private navCtrl: NavController) {
        this.asset$.subscribe(asset => {
            this.asset = asset;
            console.log(NgZone.isInAngularZone());
        });
    }
    
    editAsset() {
        this.navCtrl.push(CreateAssetPage, {
            edit: true
        });
    }
    

    Все изменения принимаются и сохраняются в компоненте. Вывод консоли всегда истинен (всегда в угловой зоне). Почему вид не обновляется?

  • В прошлый раз я пытался вызвать changeDetection вручную, но это привело к ошибке.

    constructor(private navCtrl: NavController,  private changeRef: ChangeDetectorRef) {
        this.asset$.subscribe(asset => {
            this.asset = asset;
            console.log(NgZone.isInAngularZone());
            if(this.asset) {
                this.changeRef.detectChanges();
            }
        });
    }
    

1 ответ

Если я возьму заявление if из содержания, то все работает...

<ng-container *ngIf="asset$ | async as asset">
    <ion-content>
      ....
Другие вопросы по тегам