代码之家  ›  专栏  ›  技术社区  ›  Mike

父组件中服务器的初始状态

  •  1
  • Mike  · 技术社区  · 6 年前

    我正在查看 ngrx example app 并试图找出一种在查找页面上初始化状态的好方法( http://localhost:4200/#/books/find ).

    看起来我应该能够将此添加到AppComponent

    ngOnInit() { 
        this.store.dispatch(new book.Search('Michael Jordan')); 
    }
    

    但这并不是在 FindBookPageComponent 这似乎发生得太早了。 想知道是否有人可以解释这一点,并提供更好的方法。

    注: 将ngOnInit添加到 FindBookPageComponent 工作正常,但每次此人返回时都会被呼叫。如果这有意义的话,我希望这更像是一种初始状态。

    谢谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   rijin    6 年前

    最好将其置于路由器防护装置中=>canActivate()

    检查数据是否存在于存储中;否则调度负载数据

    canActivate(): Observable<boolean> {
      return this.checkStore().pipe(
        switchMap(() => of(true)),
        catchError((error) => of(false))
        );
    }
    
    checkStore(): Observable<boolean> {
      return this.store.select(fromStore.getDataLoaded).pipe(
        tap(loaded => {
          if (!loaded) {
            this.store.dispatch(new fromStore.LoadDataCollection());
          }
        }),
        filter(loaded => loaded),
        take(1)
        );
    }