value
геттер является частью BehaviorSubject()
, а не соответствующей наблюдаемой. Поэтому вам нужно назначить BehaviorSubject()
вместо наблюдаемого, чтобы использовать его. Попробуйте следующее
public getActivationPage(): void {
this.link$ = this._authUserService.objectRes; // <-- assign the `BehaviorSubject`
this._authUserService.activateOrResetAccount(
this._activeRoute.snapshot.params.token,
"confirmation"
);
console.log("link$: ", this.link$.value); // `value` instead of `getValue()`
}
И оно не будет работать, потому что переменная является закрытой в службе.
Я бы добавил, что это выглядит не очень элегантно. Теперь есть две ненужные копии BehaviorSubject
. Лучше было бы написать геттер в сервисе. Переменная link$
выглядит мне избыточной.
Сервис
private objectRes: BehaviorSubject<ResModel>;
public activationOrResetResponse: Observable<ResModel>
constructor(public _apiService: ApiService) {
super(_apiService);
this.objectRes = new BehaviorSubject(null) as BehaviorSubject<ResModel>;
this.activationOrResetResponse = this.objectRes.asObservable();
}
get activationValue(): ResModel {
return this.objectRes.value;
}
Компонент
public getActivationPage(): void {
this._authUserService.activateOrResetAccount(
this._activeRoute.snapshot.params.token,
"confirmation"
);
console.log("link$: ", this._authUserService.activationValue());
}
Обновление
Правильно было бы сделать следующее
Компонент
ngOnit() {
this.getActivationPage();
this._authUserService.activationOrResetResponse.subscribe(
response => { console.log(response); }
);
}
public getActivationPage(): void {
this._authUserService.activateOrResetAccount(
this._activeRoute.snapshot.params.token,
"confirmation"
);
}