У меня есть следующий сервис в Angular 7:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { map } from 'rxjs/operators';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class UserService {
private currentUserSubject: BehaviorSubject<any>;
constructor(
private http: HttpClient
) {
this.currentUserSubject = new BehaviorSubject(null);
}
public get currentUserValue(): any {
return this.currentUserSubject.value;
}
login(entity: any, inputUsername: any, inputPassword: any): any {
const httpOptions = {
headers: new HttpHeaders({
username: inputUsername,
password: inputPassword
})
};
return this.http.get(entity.url, httpOptions)
.pipe(map((user: Response) => {
console.log(user);
console.log(user.status);
if (user) {
this.currentUserSubject.next(user);
}
return user;
}));
}
}
Я хочу получить статус ответа (200, 401 и т. Д.).Если я пытаюсь подписаться, например .pipe (map (.....)). Subscribe (...), я получаю сообщение об ошибке, что подписка не является функцией.
Кроме того, я получаю только 200статусные ответы в трубе (map ()).Я не получаю ответы с другими кодами состояния здесь.
Я хочу обновить BehaviorSubject на основе полученного статуса.
Как я могу получить все ответы и их статус в службе?
Я прошел, хотя Angular 6 Получите заголовки ответа с проблемой httpclient , но здесь это не относится.
Я добавил наблюдение: «ответ» на заголовки http, но это не имело никакого значения.
const httpOptions = {
headers: new HttpHeaders({
username: inputUsername,
password: inputPassword,
observe: 'response',
}),
};