例如:
import { ActionReducerMap } from '@ngrx/store'; import { AppState } from '../models/app-state.model'; import { reducer as productReducer } from './product.reducer'; import { reducer as cartReducer } from './cart.reducer';
export const reducers: ActionReducerMap
例如:
import { ProductActionTypes, ProductActions } from '../actions/product.actions';
export interface ProductState {
products: Array
export const initialState: ProductState = { products: [] };
export function reducer(state = initialState, action: ProductActions): ProductState { switch (action.type) { case ProductActionTypes.LoadProductsSuccess: { return { ...state, products: action.payload }; } default: { return state; } } }
例如:
import { Component, OnInit } from '@angular/core'; import { Store } from '@ngrx/store'; import { ProductState } from '../reducers/product.reducer'; import { LoadProducts } from '../actions/product.actions'; import { Observable } from 'rxjs/Observable'; import { Product } from '../models/product.model';
@Component({
selector: 'app-product-list',
templateUrl: './product-list.component.html',
styleUrls: ['./product-list.component.css']
})
export class ProductListComponent implements OnInit {
products$: Observable
constructor(private store: Store
ngOnInit() { this.store.dispatch(new LoadProducts()); this.products$ = this.store.select('products'); }
}
通过以上三个步骤,可以避免在 Angular ngrx store 中出现 reducer 语法问题。