title: Typescript/Angular2 TypeError: Cannot read property of undefined
body: <p>Ang2 Component:</p>
  
  <pre><code>import { Component, OnInit } from '@angular/core';
  import { AngularFire, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2';
  import Chart from 'chart.js'
  
  @Component({
    selector: 'app-prchart',
    templateUrl: './app-prchart.component.html',
    styleUrls: ['./app-prchart.component.css']
  })
  export class AppPRChartComponent implements OnInit {
    userEmail: any;
    email: string;
    uid: any;
    records = [];
    newRecords = [];
    filteredRecords = [];
    labels = [];
  
    public barChartOptions:any = {
      scaleShowVerticalLines: false,
      responsive: true,
      legend: {
          display: false
       }
    };
    public barChartColors: any [] =[
      {
          backgroundColor:'rgba(30, 136, 229, 1)'
      }
    ];
  
    public barChartType:string = 'bar';
  
    constructor(public af: AngularFire) {
      var auth = this.af.auth.subscribe( (user) =&gt; {
        if (user) {
  
  
          this.userEmail = this.af.auth.subscribe(auth =&gt; {
            const queryObservable = af.database.list('/users/'+ auth.auth.uid +'/records/', {
            });
            queryObservable.subscribe(queriedItems =&gt; {
              this.records.push(queriedItems);
            });
  
            // Filter records into PR's
            this.newRecords =
            this.records[0].sort((a, b) =&gt; {
              if (a.movement === b.movement) {
                return a.weight &gt;= b.weight ? -1 : 1
              }
              return a.movement &gt; b.movement ? 1 : -1
            })
            .filter((rec, i, arr) =&gt; {
              if (i === 0) return true
              return rec.movement !== arr[i - 1].movement
            });
            let recordString = JSON.stringify(this.newRecords);
            let recordParse = JSON.parse(recordString);
            this.filteredRecords.push(recordParse);
          });
        } else {
        }
      });
  
      this.filteredRecords[0].forEach(function(snapshot) {
          this.labels.push(snapshot.movement);
          //barChartData.push(snapshot.weight);
      });
      //console.log(barChartLabels);
      //console.log(barChartData);
    }
  
    ngOnInit() {
  
    }
  
  }
  </code></pre>
  
  <p>I'm trying to push items into an array but I keep getting the following error:</p>
  
  <pre><code>TypeError: Cannot read property 'labels' of undefined
  </code></pre>
  
  <p>The error occurs towards the bottom where this line of code is being run:</p>
  
  <pre><code>this.labels.push(snapshot.movement);
  </code></pre>
  
  <p>I've been playing with this for hours and can't figure out what I'm doing wrong, any help is appreciated.</p>