gpt4 book ai didi

angular - "_this.http is undefined"无缘无故

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:22 28 4
gpt4 key购买 nike

在我的 LoginProvider 中,我使用了一个函数来执行登录并将创建的 session 作为 promise 返回。

@Injectable()
export class LoginProvider {

constructor(public http: HttpClient) { };

public async login(credentials: ICredentials): Promise<ISession> {

let url: string = "https:/url/to/login";

let headers: HttpHeaders = new HttpHeaders()

let params: HttpParams = new HttpParams()
.append("username", credentials.id)
.append("password", credentials.password);

return new Promise<ISession>((resolve, reject) => {
this.http.get(url, { headers: headers, params: params }).subscribe((response: ILoginResponse) => {
// handle response and return session
}, (error: HttpErrorResponse) => {
reject(error);
})
});
}
}

问题是不知何故 this.http 在调用时是未知的。调用该方法出现如下错误。

“_this.http 未定义”

而且我不知道为什么 http 应该在此函数中未定义。我在构造函数中创建它,所以它应该可用于此函数,不是吗?

最佳答案

new Promise 中的 this 指的是新的 Promise 对象而不是 LoginProvider 实例.

所以,而不是做

new Promise<ISession>((resolve, reject) => {
this.http.get(...)
})

你应该简单

return this.http.get(url, { headers: headers, params: params}).toPromise()
.then(response => // handle your response here then return your processed result);

(不要忘记导入'rxjs/add/operator/toPromise';)

关于angular - "_this.http is undefined"无缘无故,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753965/

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