angular - “Promise”类型上不存在属性“令牌”'
问题描述
我想处理一个令牌。但得到消息:
“Promise”类型上不存在属性“token”
我有以下代码。我得到一个带有属性令牌的 json。顺便说一句,我是由使用 Angular 2 的教程指导的。我已经在没有 ['token'] 的情况下尝试过它。但没有成功。我也有帖子的界面,但我没有使用它来消除错误。它也不适用于界面。
这是我的代码:
signin(email: string, password: string) {
return this.http.post<any>('http://127.0.0.1:8000/api/userLogin',
{ email: email, password: password },
this.httpOptions).map((response: Response) => {
const token = response.json()['token'];
const base64Url = token.split('.')[1];
const base64 = base64Url.replace('-', '+').replace('_', '/');
return JSON.parse(window.atob(base64));
});
}
教程:
https://www.youtube.com/watch?v=pT9_FngJuzY&t=321s
顺便说一句,在这种情况下,我使用 laravel / 护照。
success:
{token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjllOW…lsJiIWVmiiNY1Ft02MSWGS-Thx7_warYrUucP8bPHHnyMCfnU"}
解决方案
你为什么不使用 Serializable 类。
这是我通过引用来解决此问题的解决方案:Angular2 HTTP GET - 将响应转换为完整对象
export class MdfResponse {
public message?: string;
public token?: string;
constructor() {}
fromJSON(json) {
for (var propName in json)
this[propName] = json[propName];
return this;
}
}
当您调用登录功能时
signIn(user: User) { const body = JSON.stringify(user);
headers: new HttpHeaders({"Content-Type": "application/json"})
return this.http.post("http://localhost:3000/users/login", body, httpOption)
.pipe(map((response) => {
let test = new AIPResponse().fromJSON(response);
localStorage.setItem("token", test.token);
localStorage.setItem("userId", test.message);
}))
.pipe(catchError((error) => throwError(error)));
}
希望得到这个帮助!!!
推荐阅读
- c - 将指向结构的指针传递给函数的C问题
- java - 在 java 中使用模式 regx 为给定的 4 种情况生成唯一模式
- numpy - Numpy 花式索引导致选择不同的形状
- sql - 如何获得条件 SUM?
- python - lambdify 返回 TypeError:_lambdifygenerated() 缺少 1 个必需的位置参数:'k'
- c++ - Function giving precedence to GLOBAL variable instead of LOCAL - (Anomalous behaviour)
- ffmpeg - FFMPEG:结合“从图像创建视频”+ 缩放到 x + 添加音频 + 覆盖徽标
- go - 如何为 helm install 设置注释
- java-native-interface - 我从 c++ dll 回调 java,CallVoidMethod 导致 EXCEPTION_ACCESS_VIOLATION。我错过了什么
- powershell - Powershell 脚本以使用路径填写 Start in section