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

使用NGXS的单个组件中的多个存储

  •  1
  • micronyks  · 技术社区  · 7 年前

    使用下面的ngxs设置,

    用户.state.ts

    export class UserState { ... }
    

    产品状态

    export class ProductState { ... }
    

    应用组件

    import {UserState} from './user.state'
    import {ProductState} from './product.state'
    
    
    export class App{
    
      /***      
            I am not sure but like ngrx we can't say,
            private userStore:Store<UserState>    <============ can we do it in constructor like it
      ***/
    
    
      @Select(UserState.getUsers) Users$: Observable<IUsers[]>;             // This works
      @Select(ProductState.getProducts) Products$: Observable<IProducts[]>; // This works
    
      constructor(private store : Store) {}  //<==== Can we have Store<UserState> or Store<ProductState>
    
      ngOnInit(){
    
         /***
              Below In 1 Case : when I type this.store.select(state => state.
              after .(dot) it doesn't resolve to .Users(Case 1) or .Products(Case 2)
    
              Question: So how can I use two different states for below cases????????????             
         ***/
    
       // 1 Case) 
    
               this.store.select(state => state.Users.Users).subscribe((users: IUsers[]) => {
                    this.users = users;
               })
    
       // 2 Case) 
    
               this.store.select(state => state.Products.Products).subscribe((products: IProducts[]) => {
                    this.products = products;
               })
    
      }
    }
    

    使用NGXS有什么优雅的方法吗????

    1 回复  |  直到 7 年前
        1
  •  2
  •   Vivek Doshi    7 年前

    我想这对你有帮助

    // Keep this as it is
    
    @Select(UserState.getUsers) Users$: Observable<IUsers[]>;             
    @Select(ProductState.getProducts) Products$: Observable<IProducts[]>; 
    
    // And then use it like this
    
    this.Users$.subscribe((users: IUsers[]) => {
        this.users = users;
    })
    
    this.Products$.subscribe.((products: IProducts[]) => {
        this.products = products;
    })
    
    推荐文章