我的代碼有些奇怪。我的服務中有這個,非常基本,一個簡單的 httpClient 獲取......當 API 回傳狀態401時,我期待它進入錯誤......但它沒有。在我的控制臺中,我只有“完整”。當 API 回傳狀態 200 時,它在“下一個”任何想法中表現良好?
import { HttpClient } from '@angular/common/http';
...
constructor(
private httpClient: HttpClient,
private configService: ConfigService
) {}
getUserDetails() {
console.log('AuthService.getUserDetails');
return this.httpClient
.get<UserDetails>(this.configService.getModuleCoreAPi('users.details'))
.subscribe({
next: (ud) => {
console.log('next', ud);
this.userInfos.next(ud);
},
error: (error) => {
console.log('error', error);
},
complete: () => console.log('complete'),
});
}
...
更新1:這也不起作用
getUserDetails() {
console.log('AuthService.getUserDetails');
this.httpClient
.get<UserDetails>(this.configService.getModuleCoreAPi('users.details'))
.pipe(
catchError((err) => {
throw 'error in source. Details: ' err;
})
)
.subscribe(
(ud) => {
console.log('next', ud);
this.userInfos.next(ud);
},
(error) => {
console.log(error);
}
);
}
也不
getUserDetails() {
console.log('AuthService.getUserDetails');
this.httpClient
.get<UserDetails>(this.configService.getModuleCoreAPi('users.details'))
.pipe(
catchError(err => {
throw 'error in source. Details: ' err;
})
)
.subscribe({
next: (ud) => {
console.log('next', ud);
this.userInfos.next(ud);
},
error: (err) => console.log(err),
});
}
更新 2 如果我強制 API 回傳500狀態代碼,它會按預期傳遞到錯誤中
uj5u.com熱心網友回復:
我通常為此使用 rxjs catchError()。
this.httpClient
.get<UserDetails>(this.configService.getModuleCoreAPi('users.details'))
.pipe(catchError((error) => console.log(error))
.subscribe((ud) => this.userInfos.next(ud));
uj5u.com熱心網友回復:
好吧,我忘記了啟用并捕獲 401 狀態代碼的攔截器......需要休息;)
uj5u.com熱心網友回復:
您正在解構從“訂閱”方法回傳的第一個引數。洗掉第一個花括號:
.subscribe(
(ud) => {
console.log('next', ud);
this.userInfos.next(ud);
},
(error) => {
console.log('error', error);
},
() => console.log('complete')
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/466837.html
標籤:有角度的
