Angular - Почему мой компонент получает значение по умолчанию из Observable in Service, хотя оно было изменено ранее? - PullRequest
0 голосов
/ 03 июля 2019

Я установил 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

Я просто что-то пропускаю?Или это неправильный подход?Ждем ваших ответов!

РЕДАКТИРОВАТЬ: Я добавил несколько журналов консоли.К сожалению, ни один из ответов не смог решить мою проблему.Я надеюсь, что кто-то еще может мне помочь.

...