gpt4 book ai didi

java - 从服务传递到组件的 Angular 错误消息

转载 作者:行者123 更新时间:2023-12-01 01:39:58 25 4
gpt4 key购买 nike

我想问一下如何设法让我的错误响应从后端出现在前端的建议。对于后端,我使用的是 Spring Boot 2,而对于前端,我使用的是 Angular 8。所以在我尝试登录的情况下,如果用户没有提供正确的凭据,则用户会收到一条错误消息,但在我的情况下我正在使用一项服务,该服务在用户提供电子邮件和密码后单击登录时发出请求。我在控制台中收到错误消息,但它来自我的服务而不是来自组件,我想问一下如何将其传递给成分。
例如,我提供了错误的电子邮件或密码,当我单击登录时,我收到 HttpErrorResponse 并显示以下错误消息“错误:{success:false,消息:“电子邮件或密码无效!”}”太好了,但我在我的服务中得到了它,我如何将此错误传递给登录组件。 (我知道用 sessionStorage 试过非常愚蠢......)

auth.service.ts

 auth({email, password}, callback){
const helper = new JwtHelperService();

this.http.post('//localhost:8080/login',{email, password})
.subscribe(userData => {
localStorage.setItem('username', email);
let tokenStr = 'Bearer ' + userData['accessToken'];
localStorage.setItem('token', tokenStr);

const tkn = localStorage.getItem('token');
const decodedToken = helper.decodeToken(tkn);

localStorage.setItem('currentUserId', decodedToken['sub']);
console.log(decodedToken['sub']);

return callback && callback(userData);
},(err: HttpErrorResponse) => {
console.log(err);
});
}

登录.component.ts
 login() {
this.authService.auth(this.user, (e) => {

let resp: any;
resp = e.accessToken;

if (resp != null) {
// store user details in local storage to keep user logged in between page refreshes
this.accountService.loadProfile()
.subscribe(user => {
localStorage.setItem('currentUser', JSON.stringify(user));
this.router.navigateByUrl('/profile');
}, (err:HttpErrorResponse) => {
console.log(err.error);
})
}
});
}

最佳答案

不要在 auth.service 订阅而是返回一个 observable 以便它可以在其他地方订阅。进行以下更改:

 auth({email, password}, callback){
const helper = new JwtHelperService();
return this.http.post('//localhost:8080/login',{email, password});
}

而是从 login.component.ts 订阅
login() {

...

this.authService.auth(...).subscribe(() => {
// code when it is successful
}, (err:HttpErrorResponse) => {
console.log(err.error.message);
}
}

关于java - 从服务传递到组件的 Angular 错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59346421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com