【问题标题】:Angular 2 dialog in route guard candeactivate路由保护中的 Angular 2 对话框可以停用
【发布时间】:2017-03-22 12:19:22
【问题描述】:

我一直在试图弄清楚如何做到这一点,如果路线中有未保存的页面,我希望弹出一个对话框并询问用户是否希望保存数据或完全取消。

我尝试过使用提示和确认,但那些只让我一次有 2 个按钮,而我需要 3 个按钮来同时显示是、否、取消。

我的问题是,虽然我可以弹出对话框,但我不知道如何让 Angular 2 在继续之前等待用户选择,但我已经使用 Javascript 和 Jquery 进行了尝试,但仍然无法弄清楚如何让 Angular 等待用户输入,然后对选择进行操作。

欢迎所有提示! :)

这里有点麻烦,点击 bar,然后 foo 然后 bar 再次显示弹出窗口,不知道如何让它在等待值的同时等待值,因为它现在只使用之前设置的值

    if (target.hasBeenChanged == true) {

        target.popuptest();
        // using the last one set in component for now
        let selection = target.popupchoice;

        console.log('selected was: ' + selection);


        if (selection == 'yes') {
            target.PushToSave();
            return true;
        } else if (selection == 'no') {
            return true;
        } else {
            return false;
        }
    } else {
        return true;
    }

https://plnkr.co/edit/so7KeiaMiqbSy7Nr5nSB?p=info

【问题讨论】:

    标签: javascript jquery angularjs angular


    【解决方案1】:

    您可以编写自己的 HTML 和 CSS 来拥有一个 div,它将充当弹出窗口。关于这个有very good tutorials。您可以随时显示/隐藏弹出窗口,并且可以在其中添加自己的标签,包括按钮。然后,您可能需要一个function,它将根据用户执行的操作接收输入,并将具有正确参数的函数调用添加到按钮的 onclick。

    【讨论】:

    • 是的!这正是我正在做的,我做了一个迷你弹出窗口,它工作正常,但问题是当我尝试运行定时的东西时。例如,当我要求 deactivate 守卫检查值时,它会立即打开弹出窗口,但实际上并没有等待用户按下按钮的功能,它只是继续评估所有返回的变量未定义,因为用户尚未输入
    • @D.Newbie 您可以使用自己编写的辅助函数检查值。如果您需要等待逻辑,您可能有一个请求,并且您可能希望将打开弹出窗口的代码放在其回调中。
    • 是的,它一定在某个地方,我有所有需要的代码来打开弹出窗口并在之后关闭它,但缺少的正是等待用户选择选项的等待函数以及放入一个字符串的选项,该字符串可用于决定路由到哪里以及是否调用保存函数,我将研究回调并尝试找出答案:)
    • @D.Newbie 在这种情况下,您需要创建一个事件处理程序来更改该标记的值。在这里阅读更多:w3schools.com/jsref/event_onchange.asp
    • 这是一个 mini plunker plnkr.co/edit/so7KeiaMiqbSy7Nr5nSB?p=preview ,由于某种原因,它仅在单击 bar 然后 foo 然后再单击 bar 后才有效,但仍然显示我无法弄清楚的奇怪事情
    猜你喜欢
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    相关资源
    最近更新 更多