#angular
#angular
Вопрос:
В моем сервисе у меня есть subject, который запускается при вызове метода.
export class AuthService {
isAdmin$ = new Subject();
constructor(private http: HttpClient,
private utilService: UtilService) {
}
login(user:User){
this.isAdmin$.next();
return this.http.post(url, user);
}
isAdmin(){
return this.http.get(`url/permissions`));
}
}
В моем компоненте я подписываюсь на эту тему. И я хочу вызвать другой метод, который возвращает Observable. Но если я вызываю это так внутри своего компонента, это не работает.
this.authService.isAdmin$.subscribe(()=>{
this.authService.isAdmin().subscribe((result)=>{
this.isAdmin = resu<
});
Итак, как мне вызвать метод, который возвращает Observable после следующего запуска объекта?
Комментарии:
1. что
isAdmin()
делать?2. Я действительно не понимаю, что вы хотите сделать. Что такое isAdmin() ?
3. Не могли бы вы поделиться недостающими фрагментами? Или создайте stack-blitz. Подписка внутри подписки всегда является плохой практикой
4. Я добавил отсутствующий метод.
5. Я думаю, ваш метод isAdmin () должен вызываться после вашего метода login (), верно?
Ответ №1:
Может быть, вы можете использовать switchMap или SwitchMapTo :
this.authService.isAdmin$
.pipe(
switchMapTo(this.authService.isAdmin())
).subscribe(result => this.isAdmin = result);
Комментарии:
1. ДА. Большое вам спасибо. Это то, что я хочу! Это отлично работает.
2. Да, здорово! 🙂