我正在学习AngularJs17,并创建了一个登录应用程序. 但是,服务器的响应没有映射到Model Class的对象.
答复:
{
"id": 1,
"userName": "admin",
"email": "admin@gmail.com",
"password": "",
"role": 1,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNzA1NzQwMTkzLCJleHAiOjE3MDU3NDE5OTN9.obH83er-eb0Pcl_OLXhwPj7kXUy9lNh0EK3NInr3Eas"
}
模型:
export class LoginViewModel {
UserName: string;
Password: string;
constructor(){
this.UserName = "";
this.Password = "";
}
}
服务:
public Login(loginView模型: LoginViewModel): Observable<LoginViewModel> {
return this.httpClient.post<LoginViewModel>(this.NODE_HOST + "/api/authenticate",loginViewModel,{responseType: "json"}).pipe(
map(user =>{
if(user) {
var userData = JSON.parse(JSON.stringify(user));
this.currentUser = user.UserName;
console.log("userData-UserName: ", userData.userName);
console.log("User: ", JSON.stringify(user));
sessionStorage.setItem('currentUser', JSON.stringify(user));
}
return user;
})
);
}
在服务中,我可以使用stringify
和parsing
来破解它,以获得json struct 中的用户数据,然后我可能能够使用该 struct 初始化一个新的userObj,但这似乎是一种肮脏的方式.
在Udemy课程中,使用Angular 11的 struct 能够自动将数据获取到ModelClass中,而在我的(Angular 17)中,这是不可能的.