Angular 角度6 Http订阅问题:属性';用户信息';不存在于类型';答复';
我正在使用angular6 服务台Angular 角度6 Http订阅问题:属性';用户信息';不存在于类型';答复';,angular,http,Angular,Http,我正在使用angular6 服务台 post(url, body, options): Observable<Response>{ let headers = new Headers(); this.createAuthorizationHeader(headers); return this.http.post(this.endpoint + url, body, httpOptions) .pipe(map(this
post(url, body, options): Observable<Response>{
let headers = new Headers();
this.createAuthorizationHeader(headers);
return this.http.post(this.endpoint + url, body, httpOptions)
.pipe(map(this.parseData))
.pipe(catchError(this.handleError));
}
login(data) {
return this.httpClient.post('api/authenticate', data , {
'Content-Type': 'application/x-www-form-urlencoded'
});
}
login.ts
onSubmit() {
if(this.loginForm.invalid) {
return;
}else{
let data = {
'email': this.loginForm.value.email,
'password': this.loginForm.value.password
}
this.loginService.login(data).subscribe(
response => {
console.log(response.userInfo.name);
this.myRoute.navigate(['dashboard']);
},
error =>{
console.log(error);
}
)
}
}
我收到错误属性“userInfo”在类型“Response”上不存在。
但在我的http响应中我是{“status”:true,“userInfo”:{“id”:1,“email”:admin@admin“,”密码“:”123456“,”类型“:”管理员“,”姓名“:”管理员“}”,消息“:”su“}
我甚至厌倦了删除我的map函数,但对于subscribe函数,我仍然会得到相同的错误。我没有遇到这种问题。更新到angular 6后,我收到了这个问题,我甚至更新了“rxjs/operators”中的import{map,catchError,tap}代码>导入文件
对不起,英语不好。如有任何更新或见解,我们将不胜感激。
谢谢您可以使用响应['userInfo']
。默认响应没有名为userInfo的属性,您可以将响应类型转换为给定类型或执行上述操作。如果我从问题中猜对了,则会在编译时引发错误。您是否正确定义了响应类型?应该是这样的
type Response = {
status: boolean,
userInfo: {id: number, email: string, password: number, type: string, name: string},
message: string};
或者,如果要将post()函数用于其他类型的请求,请在服务中定义一个更通用的post函数,如下所示:
post(url, body, options): Observable<any> { ...
post(url,body,options):可观察的{。。。
停止使用不推荐使用的Http服务。使用HttpClient服务,并阅读其详细指南:您是说您正在获得响应,但无法读取userInfo的属性?@NinjaJami yes。