Угловой наблюдаемый объект не вызывает после некоторого простоя - PullRequest
0 голосов
/ 13 октября 2018

Чтобы создать observable Я создал класс, который сохраняет объект и класс наблюдаемым next(), например, при каждом назначении.

class myObsClass{
private sub;
public obj;
public obj$;

constructor(){
    this.sub = new Subject<any>();
    this.obj = new Object();
    this.obj$ = this.sub.asObservable();
   }

set object (value){
     this.obj = val;
     this.sub.next(this.obj);
    }
}

Я создаю его экземпляр следующим образом:service.

public myObs = new myObsClass();

и в компоненте я подписываюсь на то же самое, как это.

this.service.myObs.obj$.subscribe(data => {
// something to do with function
});

Это работает просто отлично.Проблема в том, что после простоя, скажем, 10 или 20 минут, он просто не вызывает подписку вообще.

В чем здесь может быть проблема?Хорошо ли подходит этот подход?

Написанный код предназначен только для обеспечения ясности и может не работать, если вы копируете-вставляете.

1 Ответ

0 голосов
/ 13 октября 2018

Похоже, вы теряете фактическую ссылку myObsClass.

В этом вам может помочь -

  1. Преобразование вашего класса myObsClass в класс обслуживания с помощью @Inject Decorator
  2. Добавить в список providers вmodule.Это создаст синглтон для сервисов, на которые можно ссылаться в нескольких компонентах и ​​сервисах.Он будет поддерживать ссылку на все компоненты.
  3. Внедрить эту услугу, где вам нужно.

Примечание. Добавьте этот класс обслуживания в очень распространенный модуль.Если вы не уверены, то добавьте в app.module.ts.

...