Quantcast
Channel: Ionic Forum - Latest topics
Viewing all articles
Browse latest Browse all 70440

Why on state change loading hasn't dismissed in ionic4 ngrx/store?

$
0
0

@mrdorofeev wrote:

Why on state change loading hasn’t dismissed ? Look - presentLoading() function. In NgRx Store DevTools - “isLoading” state changed correctly after call action on subscribe to store but loading in progress. Thanks for any help!

import { Component } from '@angular/core';
import { Store } from '@ngrx/store';
import { State } from '../store/reducers';
import * as DogsActions from '../store/actions/dogs';
import { Observable } from 'rxjs';
import { LoadingController } from '@ionic/angular';
import {environment} from '../../environments/environment';

@Component({
  selector: 'app-profile',
  templateUrl: 'profile.page.html',
  styleUrls: ['profile.page.scss']
})
export class ProfilePage {
    dogImgUrl$: Observable<string>;
    env$: string;
    isLoading$: Observable<boolean>;
    /*
     * The store is injected in the constructor by angular
     * The store will then be used to retrieve data from the store and pass then to components
     * The store will also be used to dispatch action to the store on certain event
     * The State is the global state of the application. It is used by typescript help the developper
     */
    constructor(private _store: Store<State>, public _loadingController: LoadingController) {
        /*
       * We are getting the imgUrl from the store
       */
        this.dogImgUrl$ = _store.select(state => state.dogs.currentDog.imgUrl);

        // Get the "isLoading" boolean from the store
        this.isLoading$ = _store.select(state => state.dogs.isLoading);

        this.env$ = environment.apiUrl;

        // Each time isLoading change, subscribe callback is called
        this.isLoading$.subscribe(isLoading => this.presentLoading(isLoading));
    }

    onFindAnotherDogClicked() {
        // Dispatch the "findAnotherDog" action using the _store injected in the constructor
        this._store.dispatch(new DogsActions.FetchRandomDog());
    }

    async presentLoading(isLoading: boolean) {
        const loading = await this._loadingController.create({
            message: 'Загружаю...'
        });
        if (isLoading) {
            await loading.present();
        } else {
            await loading.dismiss();
        }
    }
}

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 70440

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>