title: NgrxStore and Angular - Use the async pipe massively or subscribe just once in the constructor
body: <p>I am starting to look at ngrx Store and I see the convenience to use the Angular async pipe. At the same time I am not sure whether using the Angular async pipe massively is a good choice.</p>
  
  <p>I make a simple example. Let's assume that in the same template I need to show different attributes of an object (e.g. a Person) which is retrieved from the Store.</p>
  
  <p>A piece of template code could be</p>
  
  <pre><code>&lt;div&gt;{{(person$ | async).name}}&lt;/div&gt;
  &lt;div&gt;{{(person$ | async).address}}&lt;/div&gt;
  &lt;div&gt;{{(person$ | async).age}}&lt;/div&gt;
  </code></pre>
  
  <p>while the component class constructor would have</p>
  
  <pre><code>export class MyComponent {
    person$: Observable&lt;Person&gt;;
  
    constructor(
      private store: Store&lt;ApplicationState&gt;
    ) {
        this.person$ = this.store.select(stateToCurrentPersonSelector);
    }
  .....
  .....
  }
  </code></pre>
  
  <p>As far as I understand this code implies 3 subscriptions (made in the template via the async pipe) to the same Observable (<code>person$</code>).</p>
  
  <p>An alternative would be to define 1 property (<code>person</code>) in MyComponent and to have only 1 subscription (in the constructor) that fills the property, such as</p>
  
  <pre><code>export class MyComponent {
    person: Person;
  
    constructor(
      private store: Store&lt;ApplicationState&gt;
    ) {
        this.store.select(stateToCurrentPersonSelector)
                  .subscribe(person =&gt; this.person = person);
    }
  .....
  .....
  }
  </code></pre>
  
  <p>while the template uses standard property binding (i.e. without the async pipe), such as</p>
  
  <pre><code>&lt;div&gt;{{person.name}}&lt;/div&gt;
  &lt;div&gt;{{person.address}}&lt;/div&gt;
  &lt;div&gt;{{person.age}}&lt;/div&gt;
  </code></pre>
  
  <p><strong>Now the question</strong></p>
  
  <p>Is there any difference in terms of performance between the 2 approaches? Is the massive use of async pipe (i.e. a massive use of subscriptions) going to affect the efficiency of the code?</p>