Я пытаюсь создать свой собственный наблюдаемый сервис, но после того, как я получу исходные данные из службы, любые обновления службы не распространяются на всех подписчиков. Сервис выглядит следующим образом:
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;
}
}
компонент, использующий службу, получает начальные данные просто отлично. этот компонент получает свои данные в конструкторе:
constructor(public dataService: DataService) {
dataService.getData().subscribe(data => {
console.log("Gotcha!");
this.data.datasets[0].data = data)
});
};
который дает один Gotcha в журнале консоли. Но после обновления данных с помощью setKey (2,3) где-то еще, я ожидал this.data.next(this.keys); для передачи данных всем абонентам, и данные будут обновляться внутри этого компонента соответственно. но никакие данные не отправляются подписчикам.
Я думал, что понял фигуры Observables, но, пожалуйста, не дружайте, если я пропущу точку здесь;) любые указатели в правильном направлении будут очень благодарны!