typescript - Angular 2 effect is not working -


reducer:

import {actionreducer, action} '@ngrx/store';  import {set_brands, set_brand} './brands.actions'; import {ibrandsstorage} './brands-storage.interface';  export const brandsreducer: actionreducer<any> = (state: ibrandsstorage = {list: [], single: {}}, action: action) => {    switch(action.type) {      case set_brands: return object.assign({}, state, {       list: [...action.payload.data]     });      case set_brand: return object.assign({}, state, {       single: action.payload.data     });   } } 

effect:

import {injectable} '@angular/core'; import {action, store} '@ngrx/store'; import {actions, effect} '@ngrx/effects'; import {observable} 'rxjs/observable'; import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/switchmap';  import {get_brands, get_brand} './brands.actions'; import {brandsapi} 'app/shared/apis';  @injectable()  export class brandseffects {    constructor(private brandsapi: brandsapi, private store: store, private actions$: actions) {}    @effect() brands$: observable<action> = this.actions$     .oftype(get_brands)     .switchmap(() => this.brandsapi.getbrands())     .map(brands => this.store.dispatch({type: set_brands, payload: brands}))     // todo: add catch    @effect() brand$: observable<action> = this.actions$     .oftype(get_brand)     .switchmap(() => this.brandsapi.getbrand())     .map(brand => this.store.dispatch({type: set_brand, payload: brand}))     // todo: add catch } 

and in component in ngoninit call this:

this.store.dispatch({type: get_brands}); 

and error thrown uncaught (in promise): typeerror: unknown type returned, i'm guessing because haven't defined in reducer. don't want define get_brands in reducer won't state, want have set methods in reducer set data api.

i'm not sure if correct way of doing though, can shed light on this?

edit:

i tried add get_brands action reducer set isbusy state true gives me same error i'm not sure issue..

i looked @ this question suggests switching switchmapto switchmap i'm using switchmap..

use with:

.map(brands => ({type: set_brands, payload: brands})) 

you don't need use store.dispatch.

did imported set_brands actions in brandseffects? seams not.


Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - jQuery UI Splitter/Resizable for unlimited amount of columns -

javascript - IE9 error '$'is not defined -