【发布时间】:2020-04-28 15:24:43
【问题描述】:
复制类似于昨天回答的一个:
尝试从后端返回特定的“用户”对象。
角度:
this.authService.getUserByName(selectedName)
.subscribe( (response: User) =>
{ const selectedUser = response;
const firstname = selectedUser.FirstName;
this.f.FirstName.setValue(firstname); },
(error) =>
{ console.log(error); }
);
身份验证服务:
getUserByName(name: string): Observable<any> {
const url = this.cache.StorageGet('baseUrl') + 'auth/user/' + name;
return this.http.get(url);
}
后端.netCore
[HttpGet("user/{userName}")]
public async Task<IActionResult> GetUserbyName(string userName)
{
User userFromRepo = await _repo.GetUserbyName(userName.ToLower());
if (userFromRepo == null)
return BadRequest();
return Ok(userFromRepo);
}
请注意所有字段名称大写(与数据库中的相同,以及前端和后端中定义的“用户”中的名称)。 用户类 Angular:
export class User {
Id: string;
FirstName: string;
LastName: string;
Phone1: string;
Phone2: string;
KnownAs: string;
EmailAddress: string;
Username: string;
PasswordHash: any;
PasswordSalt: any;
Question: string;
Answer: string;
ProjectAdmin: number;
SystemAdmin: number;
}
调试器快照中显示的字段都是首字母小写。不仅: selectedUser.FirstName 显示为“未定义”,而且 selectedUser.firstName 会产生编译错误(当然)。
因此:响应没有被投射到用户?
我缺少什么(除了大脑、经验……)?
提前致谢。
瑜伽士
【问题讨论】:
-
你能在 Angular 中展示你的用户模型吗?
-
嗨,Angular:上面显示的导出类用户后端有这个:public class User { public int Id { get;放; } 公共字符串名字 { 获取;放; } 公共字符串姓氏 { 获取;放; } 公共字符串 Phone1 { 获取;放; } 公共字符串 Phone2 { 获取;放; } 公共字符串 KnownAs { 获取;放; } 公共字符串电子邮件地址 { 获取;放; } 公共字符串用户名 { 获取;放; } 公共字节 [] 密码哈希 { 获取;放; } 公共字节 [] PasswordSalt { 获取;放; } }
-
和公共字符串 Question { get;放; } 公共字符串答案 { 得到;放; } 公共 int ProjectAdmin { 获取;放; } 公共布尔系统管理员 { 获取;放; } } 应该一样吗?
-
是的,对不起,我怎么没看到!!