0

我想创建具有多个查询状态模型的单个商店。因此,无论我想在哪里选择特定的组件或服务,都可以从商店中选择特定的组件或服务。

秋田州管理是否可以做到这一点。

例如:

@Injectable({ providedIn: 'root' })
export class Query1 extends QueryEntity<myState, School> {

  constructor(protected store: myStore) {
    super(store);
  }

}


@Injectable({ providedIn: 'root' })
export class Query2 extends QueryEntity<myState, Employee> {

  constructor(protected store: myStore) {
    super(store);
  }

}

这样在组件中,如果我查询特定的 Query1 或 Query2 服务,就会得到相应的订阅。

学校组件

var query1 = Quer1.selectAll();

员工组件

var query2 = Quer2.selectAll();

任何人都建议我正确的方法来实现相同的目标。

4

1 回答 1

1

你可以这样做var query1 = Quer1.selectAll({filterBy: (entity:any) =>(entity.staffDept === 'SomeDepartment') && (entity.staffId === someID});,或者更合适的方式

@Injectable({
  providedIn: 'root'
})
export class DeliveryQuery extends QueryEntity<DeliveryState, Delivery> {
  selectVisibilityFilter$ = this.select(state => state.ui);
  selectVisibleDeliveries$ = combineLatest(
    this.selectVisibilityFilter$,
    this.selectAll(),
    this.getVisibleDelivery,

  );

  constructor(protected store: DeliveryStore) {
    super(store);
  }



  private getVisibleDelivery(filter, delivery): Delivery[] {
    switch (filter.filter) {
      case 'COMPLETED':
        switch (filter.drivername) {
          case 'All':
            return delivery.filter(d => (d.data.CHECKPOINT_CODE === 'DLC'));
          default:
            return delivery.filter(d => (d.data.CHECKPOINT_CODE === 'DLC') && (d.data.MOBILE_USER_ID === filter.drivername));
        }
      case 'FAILED':
        switch (filter.drivername) {
          case 'All':
            return delivery.filter(d => d.data.CHECKPOINT_CODE === 'DLP');
          default:
            return delivery.filter(d => (d.data.CHECKPOINT_CODE === 'DLP') && (d.data.MOBILE_USER_ID === filter.drivername));
        }

      case 'ASSIGNED':
        switch (filter.drivername) {
          case 'All':
            return delivery.filter(d => d.data.CHECKPOINT_CODE === 'ASSIGNED');
          default:
            return delivery.filter(d => (d.data.CHECKPOINT_CODE === 'ASSIGNED') && (d.data.MOBILE_USER_ID === filter.drivername));
        }

    }
  }
}

然后你这样称呼它:this.list = this.deliveryQuery.selectVisibleDeliveries$

我不确定这是否是最好的方法,但这是我通过修改文档中的方法得到的。希望它可以帮助。我自己也与秋田框架作斗争:)

于 2019-07-26T09:15:50.683 回答