$mdDialog,取消时传递对象

$mdDialog, pass object on cancel

this.$mdDialog.show({
    controllerAs: 'ctrl',
    resolve: {
        product: product
    },
    controller:($mdDialog, product) => {
       close() => {
           $mdDialog.hide({productToUpdate: product}
       }
    },
    templateUrl: 'product-dialog.tmpl.html',
    parent: angular.element(document.body),
       clickOutsideToClose: true,
    }).then(productToUpdateOrDelete => { // on hide
       cb(productToUpdateOrDelete);
    }, () => { // on clickoutside or escape
       // Need to run my cb() here with the modified product
    });
}

当 $mdDialog 通过 escape 和 clickOutside 关闭时,我需要传递一个对象。

在文档中找不到任何相关信息。 https://material.angularjs.org/latest/api/service/$mdDialog

这不可能吗?

无法与这些事件交互,检查:No way to intercept MdDialog close events #3893

我的建议是 @camden_kid suggested in this comment

  1. 创建服务
  2. onRemoving 函数上调用该服务
  3. 在该服务中保存您需要的任何对象。
  4. 在取消$mdDialog.showpromise回调时,调用服务获取值。

Check codepen as example

其他选项是使用 preserveScope: true 并直接修改父级的范围,并在对话框取消后恢复值。