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:

  1. data in const variable exported
      export const const_data: constdatastructure {       item1: 'basic string 1',       item2: 'basic string 2'       item3: 'basic string 3'     }  
  1. service return promise of data.
      import { const_data } './data.blank';     @injectable()     export class dataservice {       getdefaultvalue() {         return promise.resolve(const_data)       }     }  
  1. 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???");         });       }      }  
  1. 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

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -