Angular2 Observable BehaviorSubject-Dienst funktioniert nicht

Ich versuche, meinen eigenen beobachtbaren Dienst zu erstellen, aber nachdem ich die anfänglichen Daten vom Dienst erhalten habe, werden Aktualisierungen des Dienstes nicht an Abonnenten weitergegeben. Service sieht so aus:

import { Injectable } from '@angular/core';
import { Observable, BehaviorSubject } from 'rxjs/Rx';

@Injectable()
export class DataService {
  keys : number[] = [4,5,1,3,2];
  private data :BehaviorSubject<number[]> = new BehaviorSubject(this.keys);

  constructor() {};

  public setKey(i:number, val:number) :void {
    this.keys[i]=val;
    this.data.next(this.keys);
  }
  public getData() :Observable<number[]> {
    return new Observable(fn => this.data.subscribe(fn));
  }
  public getKeys() :number[] {
    return this.keys;
  }
}

die Komponente, die den Dienst verwendet, erhält die anfänglichen Daten einwandfrei. Diese Komponente erhält ihre Daten im Konstruktor:

constructor(public dataService: DataService) {
    dataService.getData().subscribe(data => {
      console.log("Gotcha!");
      this.data.datasets[0].data = data)
    });
};

Das gibt ein Gotcha im Konsolenlog. Aber nachdem ich die Daten mit setKey (2,3) woanders aktualisiert hatte, erwartete ich das this.data.next (this.keys); Daten an alle Abonnenten zu senden und Daten innerhalb dieser Komponente entsprechend zu aktualisieren. Es werden jedoch keine Daten an die Abonnenten gesendet.

Ich dachte, ich habe die Observables herausgefunden, aber bitte sei nicht freundlich, wenn ich den Punkt hier verpasse;) Zeiger in die richtige Richtung werden sehr geschätzt!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage