Angular 无法在错误块中读取警报对话框
我想显示警报对话框,如果登录不成功,但它不工作。我是否在代码中做错了什么Angular 无法在错误块中读取警报对话框,angular,ionic-framework,ionic4,Angular,Ionic Framework,Ionic4,我想显示警报对话框,如果登录不成功,但它不工作。我是否在代码中做错了什么 login(params) { this.presentLoader(); return this.http .post(`${this.base_url}/login`, new HttpParams({ fromObject: { 'username': params.username, 'pass
login(params) {
this.presentLoader();
return this.http
.post(`${this.base_url}/login`, new HttpParams({
fromObject: {
'username': params.username,
'password': params.password,
}
}))
.subscribe((response: any) => {
this.loader.dismiss();
this.storage.set('access_token', response.access_token);
this.storage.set('user_id', response.id);
this.storage.set('username', params.username);
this.storage.set('email', response.email);
this.authState.next(true);
//other codes
},
(error) => {
this.presentError('Uh oh, Login failed!. Please try again');
},
() => {
this.loader.dismiss();
}
);
}
private async presentLoader() {
this.loader = await this.loadingCtrl.create({
message: 'pls wait',
});
await this.loader.present();
}
private async presentError(message) {
const alert = await this.alertCtrl.create({
message: message,
buttons: ['OK']
});
await alert.present();
}
我认为它不会读取错误块中的所有内容,但如果我将“警报”对话框放在loader.Disclose下,它会工作检查presentError消息中的“this”范围。此外,如果HTTP响应代码与200不同,即400或500个HTTP代码中的任意一个,则只能在subscribe中调用错误回退。@DiegoVictordeJesus我已尝试在subscribe中插入错误,但仍不起作用。在完整回调(第三个subscribe函数)中您可以检查是否抛出错误,并尝试在其中显示您的对话框。糟糕,如果出现错误,您无法在onCompleted回调中进行检查。请参阅:@nurr在调用async func之前是否尝试添加wait?等待此消息。presentError(“哦,登录失败!请重试”);