angular - Undefined in place of stream observable while working with ng effects -
so im doing flow i'd add new object other's object collection. first have let's domain related stuff.
i'm sending object backend when i'd recieve callback send antoher action store upon effect should take action.
in action should yet again call backend controller new payload, flow should end. problem occurs on calling backend. im recieving following error there:
update project effect project.effects.ts:52 {projectid: "5980ea8390dfb5285402e18b", userid: "admin@wp.pl", drawings: array(2), projectname: "test pro"} project.service.ts:37 z update project service project.service.ts:38 {projectid: "5980ea8390dfb5285402e18b", userid: "admin@wp.pl", drawings: array(2), projectname: "test pro"}drawings: (2) [{…}, drawing]projectid: "5980ea8390dfb5285402e18b"projectname: "test pro"userid: "admin@wp.pl"__proto__: object core.es5.js:1084 error typeerror: provided 'undefined' stream expected. can provide observable, promise, array, or iterable. @ object.subscribetoresult (subscribetoresult.js:73) @ im using similiar flow in other part of app (eg. login) , works ok. below code:
@effect() addnewdrawing = this.actions .oftype(projectactions.add_new_drawing) .map(topayload) .withlatestfrom(this.store.select(getproject)) .switchmap(([payload, project] : [adddrawingcommand, project]) => this.uploadservice.upload(payload.file) .mergemap((result:any) : => { project.drawings.push(new drawing(payload.drawingname, result.drawingurl, 0)); console.log(payload) console.log('------------------') console.log(result) console.log(project) console.log('------------------') return this.store.dispatch(new updateproject(project)); })); @effect() updateproject = this.actions .oftype(projectactions.update_project) .map(topayload) .switchmap(payload => { console.log('from update project effect'); console.log(payload); return this.projectservice.updateproject(payload) } ); everything seems blow when calling projectservice:
updateproject(project: project): observable<any> { console.log('z update project service') console.log(project) return this.http.put(`${this.projecturl}/${project.projectid}`, project) .map(response => response.json()); } but same other service work alright.
inside mergemap you're returning value this.store.dispatch call doesn't return observable.
for more info: https://github.com/ngrx/store/blob/master/src/store.ts#l35
Comments
Post a Comment