angular - Component dependencies & Using life cycle hooks as logic -


the problem :

  <div class="appcontainer">     <my-cube-container></my-cube-container>     <my-toolbox></my-toolbox>   </div> 

my-toolbox calls service inside constructor. service a calls service b , set values service. my-cube-container calls service b in constructor. when my-cube-container calls service b values aren't initialized.

possible resolution ?:

  • using life cycle hooks: if 1 service called in onnginit() called after other service used in component constructor. feels bit wrong , not explicit.
  • tell angular component dependent of one. think more explicit, , that.

you have several options, keep things way are, move calls services nginit() logic should inside method , not on constructor. make life harder when comes testing. after create observable values on service b , make <my-cube-container></my-cube-container> subscribe observable, gets notified when values available.

another option creating new component wrap 2 components. component responsible feed data <my-cube-container> , <my-toolbox> , this:

<my-wrapper>   <my-cube-container [values]="servicebvalues"></my-cube-container>   <my-toolbox (setvalues)="setvalues($event)"></my-toolbox> </my-wrapper> 

and ts code this:

import {component} 'angular2/core';  @component({   selector: 'my-wrapper',   template: `     <my-wrapper>       <my-cube-container [values]="servicebvalues"></my-cube-container>       <my-toolbox (setvalues)="setvalues($event)"></my-toolbox>     </my-wrapper>   ` }) export class mywrappercomponent {   public servicebvalues;    constructor(private servicea: serviceb, private serviceb: serviceb)    setvalues(event) {     console.log(event);     this.servicea(event);     this.servicebvalues = this.serviceb.getvalues(); // guess available now, if not use promises or observables   } } 

so <my-wrapper> responsible logic , actual components more dummy components show data.


Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -