Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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_Ionic4_Candeactivate - Fatal编程技术网

Angular 带角烛光的离子警报

Angular 带角烛光的离子警报,angular,ionic4,candeactivate,Angular,Ionic4,Candeactivate,我试图使用离子警报来保持“确认”功能的行为 canDeactivate(component: UserFormComponent) { if (component.userFormView.userForm.dirty) { this.confirmDeactivate(); } return true; } private async confirmDeactivate() { const alert = await this.alertCo

我试图使用离子警报来保持“确认”功能的行为

canDeactivate(component: UserFormComponent) {
    if (component.userFormView.userForm.dirty) {
        this.confirmDeactivate();
    }

    return true;
}

private async confirmDeactivate() {
    const alert = await this.alertController.create({
        header: 'Confirm!',
        message: 'Message <strong>text</strong>!!!',
        buttons: [{
            text: 'Cancel',
            role: 'cancel',
            cssClass: 'secondary',
            handler: (blah) => {
                console.log('Confirm Cancel: blah');
            }
        }, {
            text: 'Okay',
            handler: () => {
                console.log('Confirm Okay');
            }
        }]
    });

    await alert.present();
}
canDeactivate(组件:UserFormComponent){
if(component.userFormView.userForm.dirty){
这个.confirmDeactivate();
}
返回true;
}
私有异步confirmDeactivate(){
const alert=等待this.alertController.create({
标题:“确认!”,
消息:“消息文本!”,
按钮:[{
文本:“取消”,
角色:“取消”,
cssClass:“次要”,
处理者:(废话)=>{
log('Confirm-Cancel:blah');
}
}, {
文字:“好的”,
处理程序:()=>{
console.log('Confirm ok');
}
}]
});
等待警报。当前();
}
使用此代码,当我单击更改页面时,页面已更改,然后出现确认对话框

当我使用confirm()而不是这个函数时,效果很好,页面会等待答案


如何获得与窗口确认函数相同的行为?

canDeactive必须返回布尔值、承诺值或可观察值。返回的内容告诉Angular它是否可以停用。而且你总是立刻返回真值。是的,这是正常的,我只想在表单变脏时显示确认对话框。是的,我必须返回一个布尔值,但它没有达到我的预期。请再次阅读我的评论:您总是返回true。true表示:可以停用。您需要返回一个承诺或一个解析为/发出真或假的可观测值,以告知Angular是否应该停用。