title: Angular 4 cdk table trackby does not work. The whole table is rerendered
body: <p>Solved:
  The problem was in rxJS threads. One thread too frequently passed empty array, so it reseted the table.</p>
  
  <p>The table is updated every 4 seconds. To stop blinking I apply a trackBy function. I see that the function is triggered, but the whole table is rerendered. I guess I do something wrong.
  What I do...
  Set the tracking function.</p>
  
  <pre class="lang-js prettyprint-override"><code>&lt;mat-table ... [trackBy]="trackById"&gt;
  </code></pre>
  
  <p>Implement the tracking function.</p>
  
  <pre class="lang-js prettyprint-override"><code> trackById(index, item) {
      console.log(item._id);
      return item._id;
    }
  </code></pre>
  
  <p>The table is updated by the table's Data Source update.</p>
  
  <pre class="lang-js prettyprint-override"><code> updateOperations() {
      this.dataSource = new Source(this.forexService);
    }
  </code></pre>
  
  <p>The whole component is here <a href="https://gist.github.com/vlikin/6f130c53b1fd38116afe20d15a2afc40" rel="nofollow noreferrer">https://gist.github.com/vlikin/6f130c53b1fd38116afe20d15a2afc40</a> .</p>
  
  <p>This component displays a list of operations. It retrieves data from two observables. The data source of the table is created once. The data change is initated by Behaviour Subject dataS. Data retring process is locate in the function <code>update</code>. mat-table component uses the directive trackBy that have to optimize the output. But it still blinking.</p>
  
  <p>There are two plunks with and without trackId:
  With - <a href="https://embed.plnkr.co/wK5Jh4tIgY9p9Gw4rfhx/" rel="nofollow noreferrer">https://embed.plnkr.co/wK5Jh4tIgY9p9Gw4rfhx/</a>
  Without - <a href="https://embed.plnkr.co/Rc9z9aXlalQe8yWpGjUq/" rel="nofollow noreferrer">https://embed.plnkr.co/Rc9z9aXlalQe8yWpGjUq/</a></p>
  
  <p>There are not such effects at all. At my application it is blinking.</p>
  
  <p>I hope, anybody will help me. Regards.</p>