Я установил Angular-Service, который получает URL-параметр и сохраняет его в переменной BehaviorSubject.
@Injectable({
providedIn: 'root'
})
export class ResultService {
private resultDefault = new BehaviorSubject<string>("0");
currentResult = this.resultDefault.asObservable();
constructor(private router: Router) {
this.router.events.subscribe(val => {
if (val instanceof RoutesRecognized) {
console.log("resultDefault was:", this.resultDefault.getValue());
this.resultDefault.next(val.state.root.firstChild.params.id);
console.log("resultDefault is:", this.resultDefault.getValue());
}
});
}
Теперь я хочу получить доступ к этой переменной из компонента, подписавшись на Observable,
constructor( private resultService: ResultService ) { }
ngOnInit() {
this.resultService.currentResult.subscribe(data => {
console.log("Component gets:", data);
this.resultID = data;
});
}
Однако я получаю значение по умолчанию («0»), хотя переменная была изменена в конструкторе Сервиса.
Это то, что выводит консоль,в следующем порядке:
Angular is running in the development mode. Call enableProdMode() to enable the production mode.
resultDefault was: 0
resultDefault is: 3
Component gets: 0
Я просто что-то пропускаю?Или это неправильный подход?Ждем ваших ответов!
РЕДАКТИРОВАТЬ: Я добавил несколько журналов консоли.К сожалению, ни один из ответов не смог решить мою проблему.Я надеюсь, что кто-то еще может мне помочь.