17 - Router Store
In this section we examine the router store library from NgRx
1. Add a new presentational components for products
nx generate @nrwl/angular:component containers/product-list --project=products
CREATE libs/products/src/lib/containers/product-list/product-list.component.html
CREATE libs/products/src/lib/containers/product-list/product-list.component.spec.ts
CREATE libs/products/src/lib/containers/product-list/product-list.component.ts
CREATE libs/products/src/lib/containers/product-list/product-list.component.scss2. Add material module to Products module
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { ProductsComponent } from './containers/products/products.component';
import { StoreModule } from '@ngrx/store';
import { EffectsModule } from '@ngrx/effects';
import {
productsReducer,
initialState as productsInitialState,
} from './+state/products.reducer';
import { ProductsEffects } from './+state/products.effects';
import { ProductListComponent } from './containers/product-list/product-list.component';
import { MaterialModule } from '@demo-app/material';
@NgModule({
imports: [
CommonModule,
MaterialModule,
RouterModule.forChild([{ path: '', component: ProductsComponent }]),
StoreModule.forFeature('products', productsReducer, {
initialState: productsInitialState,
}),
EffectsModule.forFeature([ProductsEffects]),
],
declarations: [ProductsComponent, ProductListComponent],
providers: [ProductsEffects],
})
export class ProductsModule {}3. Add presentational list component onto the container components template
4. Update presentational ProductList component to receive products as inputs
5. Add a material nav list to render a list of Products
6. Add material select to filter on category
Add on filter method to component to emit a filter
Add filter listener to Products container components template
7. Update URL on filter change and no not dispatch a LoadProducts action from the Products component
8. Add an effect to listen for router actions
9. Update the Products service to use the new params of category
Last updated