Angular 2:使用CanDeactivate,但显示模态而不是window.confirm

时间:2016-12-19 08:55:32

标签: angular bootstrap-modal rxjs

如何使用引导模式而不是确认来使用CanDeactivate?事实是:如何在执行此过程时返回一个observable?

代码如下。 CheckoutComponent 是相同的组件,我有模态和我想要阻止停用的模式

public static String getJsonFromUrl(String url){
    Gson gson = new GsonBuilder().create();
    try{
        Reader reader = new InputStreamReader(new URL(url).openStream());
        gson.fromJson(reader, JsonObject.class);

    }catch(IOException e){
        throw new RuntimeException(e);

    }

    return gson.toString();
}

public static void main(String[] args) {
    String json = getJsonFromUrl("https://api.kraken.com/0/public/Assets?asset=XBT");
    System.out.println(json);

}

但我正在处理

  

TypeError:无法读取未定义的属性“saveChanges”

1 个答案:

答案 0 :(得分:4)

返回Promise而不是Observable可能会更好,因为你只需要一次布尔答案。然后,您可以将单击事件添加到解析承诺的模式按钮:

canDeactivate(): Promise<boolean> {

        let $modal = jQuery('#deactModal').modal();
        return new Promise<boolean>((resolve, reject) => {
          document.getElementById("btnAccept").onclick = ((e: any) => {
              jQuery('#deactModal').modal('hide');
              resolve(true);
          });

          document.getElementById("btnCancel").onclick = ((e: any) => {
              jQuery('#deactModal').modal('hide');
              resolve(false);
          });

          $modal.modal("show");

        });  
}

您可以避免使用带有角度引导程序库的事件处理程序而不是jQuery引导程序。