Я использую Angular.У меня есть сервис, который я использую для хранения и получения данных из локального хранилища.Я сохраняю BehaviorSubject asObservable ().Код ниже:
import { Injectable} from "@angular/core";
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class NavigationStorageService {
ModuleTitle = new BehaviorSubject<string>("");
currentModuleTitle = this.ModuleTitle.asObservable();
constructor() {}
setModuleId(ModuleId) {
localStorage.setItem('subModuleId', ModuleId)
this.ModuleTitle.next(ModuleId);
}
getModuleId() {
this.ModuleTitle.next(localStorage.getItem('subModuleId'));
return this.currentModuleTitle;
}
}
Далее я получаю эти данные, используя код ниже:
getModuleId() {
this._navigationStorageService.getModuleId()
.subscribe(
subModuleId => {
this.subModuleId = subModuleId
},
error => {
console.log(error)
},
() => console.log("getModuleId"));
}
Моя проблема в том, что я хочу выполнить другую функцию, когда наблюдаемая завершена, но эта наблюдаемая никогда не выполняетсязавершено, поэтому я не могу этого сделать.
() => console.log ("getModuleId") не показывает сообщение.
Как мне решить эту проблему?
В другой части моего приложения я использую Observable для получения запроса HttpClient, и он отлично работает.Я имею в виду onComplete пожары, как следует.
Я пытался использовать .finally ()
getModuleId() {
this._navigationStorageService.getModuleId()
.finally(() => console.log("getModuleId"))
.subscribe(
subModuleId => {
this.subModuleId = subModuleId
},
error => {
console.log(error)
},
() => console.log("getModuleId"));
}
, но это не помогает.