angular - Angular2 modify constant data returned from service -
my problem: want have default data in separate file can call reset default value if want to, const data updated.
i hardcode value straight in constructor, block me using same "blank state" across different module.
flow:
- data in const variable exported
export const const_data: constdatastructure { item1: 'basic string 1', item2: 'basic string 2' item3: 'basic string 3' }
- service return promise of data.
import { const_data } './data.blank'; @injectable() export class dataservice { getdefaultvalue() { return promise.resolve(const_data) } }
- set service in private item inside constructor.
export class app implements oninit { defaultdata: constdatastructure; constructor(private dataservice: dataservice) {} ngoninit() { this.resetdefaultdata(); } resetdefaultdata() { this.dataservice.getdefaultvalue().then(data => { this.defaultdata = data; console.log("return of promeses should have been resseting data default???"); }); } }
- but ngmodel still update data.blank.ts (???)
question: why can ngmodel update private service return asynch promise reference constant?
what wrong , how can fix that. see plnk exemple here: full running exemple.
intresting... guess problem service (which singleton), returns resolved promise. promise reference same object on every call singleton too. component have same reference object:
this.defaultdata = data
solution: change service return clone of object:
export class dataservice { getdefaultvalue() { let data = object.assign({}, const_data); // cloned data object return promise.resolve(data); } }
Comments
Post a Comment