Угловые резольверы с госуправлением Акита - PullRequest
0 голосов
/ 14 ноября 2018

Из-за отсутствия документов (охранники, распознаватели, маршрутизация почти не документированы) я борюсь с управлением состоянием Акиты и использованием угловых преобразователей, которые я до сих пор использовал с маршрутизацией (когда не использовал состояние mgmt).

Я смотрю на следующее Суть , где автор подписывается внутри компонента, и я пытаюсь переместить это в распознаватель.

Я пробовал нескольковарианты включения следующих строк в resolver и подписки, но ничего не получалось:

this.productsService.get().subscribe();

    this.loading$ = this.productsQuery.selectLoading();

    this.products$ = this.search.valueChanges.pipe(
      startWith(''),
      switchMap(value => this.productsQuery.selectAll({
         filterBy: entity => entity.title.toLowerCase().includes(value)
      }))
    );

1 Ответ

0 голосов
/ 18 ноября 2018

Вы можете получить данные в резольвере и обновить магазин.

@Injectable()
class ProductsResolver {
  constructor(private productsService) {}

  resolve(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<any> {
    return this.productsService.getProducts().pipe(
      tap(products => {
        this.productsService.set(products);
      })
    )
  }
}


class ProductsService {
  constructor(private store: ProductsStore) {

  }

  set(products) {
    this.store.set(products);
  }
}

На ваших маршрутах:

const routes: Routes = [
  {
    path: 'path',
    component: ProductsComponent,
    // The value that returns from the resolver resolve() method
    // will be assign to the products property on ActivatedRoute
    resolve: { products: ProductsResolver }
  }
];

Затем в вашем компоненте:

class Component {
  constructor(private route: ActivatedRoute) {}

  ngOnInit() {
    this.products = this.route.snapshot.data['products'];
  }
}
...