在离子防护中使用 ngrx

Using ngrx in ionic guard

在离子中我有守卫。在我的旧版本中它看起来像这样(我从服务器获取数据):

ionViewCanEnter(): Promise<any> {
    return this.miejscaService.pobierzSzczegoly(this.navParams.data)
         .do(resp => {
            this.atrakcja = resp;
        })
        .toPromise();
}

它工作得很好,但我想缓存数据,所以我现在使用 ngrx 商店。 我得到数据但守卫不工作:/没有错误。不知道为什么...

ionViewCanEnter(): Promise<any> {
    return this.store.select(getWybranaAtrakcja)
        .do(resp => {
            console.log('I\'m here');
            console.log(resp);
            this.atrakcja = resp;
        })
        .toPromise();
}

当我用谷歌搜索时,bug 很小(在我看来)。到达商店从未解决(就承诺而言)。 https://github.com/Reactive-Extensions/RxJS/issues/1088

ionViewCanEnter(): Promise<boolean> {
    let resolver = (subsription: Subscription, resolve: Function, result: any) => {
        resolve(result);
        subsription.unsubscribe();
    };
    let rejecter = (subsription: Subscription, reject: Function, error: any) => {
        reject(error);
        subsription.unsubscribe();
    };

    return new Promise((resolve, reject) => {
        let subscription = this.store.select(getWybranaAtrakcja)
            .pipe(
                filter(resp => !!(resp))
            )
            .subscribe(
                result => {
                    this.atrakcja = result;
                    resolver(subscription, resolve, result);
                },
                error => {
                    rejecter(subscription, reject, error);
                }
            );
    });
}