Я вызываю метод службы внутри метода ngOninit и присваиваю возвращаемое значение этого метода службы переменной-члену. Позже я хочу снова использовать это значение переменной внутри ngOnInit. Но, я полагаю, из-за проблем с синхронизацией этой переменной не присвоено какое-то значение YET, но она уже пыталась получить доступ к его значению. Как я могу исправить эту проблему? заранее спасибо
Я использую метод ngOnInit:
ngOnInit() {
//Execute a service method here to get the user Id.
this.authorizeService.getUser().subscribe(data => {
this.userId = +data.sub;
});
//Pass the userId as a parameter to get the list associated with that user.
this.service.getList(this.userId).subscribe(data => {
this.list = data;
})
}
Но там написано, что cannot read property sub of null
. Я нахожусь в учетной записи, и я уже пытался вложить эти два вызова. Результат тот же.
Мне нужно вложить эти два вызова подписки в switchMap
или mergeMap
. Но я не мог хорошо понять их синтаксис.
getUser()
метод обслуживания
public getUser(): Observable<IUser | null> {
return concat(
this.getUserFromStorage().pipe(filter(u => !!u), tap(u =>
this.userSubject.next(u))),
this.userSubject.asObservable());
}
getList()
метод обслуживания
getList(userId: number): Observable<number[]> {
return this.http.get<number[]>("myApiURLhere?userId=" + userId)
.pipe(
retry(1),
catchError(this.errorHandler)
);
}
Ошибка:
Argument of type '(data: IUser) => void' is not assignable to parameter of type '(value: IUser, index: number) => ObservableInput<any>'.
Тип void нельзя присвоить типу ObservableInput.
ngOnInit()
методом. Пожалуйста, дайте мне знать, если вам понадобится больше. - person zodiac645   schedule 04.06.2020