Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 无法在错误块中读取警报对话框_Angular_Ionic Framework_Ionic4 - Fatal编程技术网

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(“哦,登录失败!请重试”);