Угловая подписка не будет обновляться при изменении данных - PullRequest
0 голосов
/ 10 января 2019

У меня есть подписка на машинописный текст, который извлекает местоположения из моей собственной базы данных ASP.NET. Однако они извлекают данные только один раз, но местоположения должны обновляться в режиме реального времени. Как я могу получить мой Observable для автоматического обновления?

Я пытался использовать ChangeDetectorRef, но это не решило проблему (ни .MarkForCheck () , ни .DetectChanges () ).

getLocations(){
        console.log("Get them all!"); 
        this.API.getAllLocations().subscribe(result =>{
            this.locations = result;
            console.log(this.locations);
            this.addLocationMarkers();
            this.ref.markForCheck();
        });
}

getAllLocations(): Observable<Location[]> {
    return this._http.get<Location[]>(this.url + "location/", this.headers);
}

Я ясно вижу, что console.log (this.locations) вызывается только один раз в моем браузере. Почему он не вызывается при изменении базовых данных в базе данных?

1 Ответ

0 голосов
/ 10 января 2019

это можно сделать с помощью библиотеки Rxjs

в вашем файле TS

import "rxjs/Rx";


numberSubscription: Subscription;

getLocations(){
console.log("Get them all!"); 
const data = Observable.interval(10000).startWith(0); <= this is the time interval in ms at which you want check for change of data in database.
    this.numberSubscription = data.subscribe((number: number) => {
        this.API.getAllLocations().subscribe(result =>{
                    this.locations = result;
                    console.log(this.locations);
                    this.addLocationMarkers();
                    this.ref.markForCheck();
                });
    });
  }

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...