【问题标题】:How to close a modal window with Nativescript in Angular?如何在 Angular 中使用 Nativescript 关闭模态窗口?
【发布时间】:2018-11-13 15:53:04
【问题描述】:

我有一个使用模态服务的模态:

import { ModalDialogService } from "nativescript-angular/directives/dialogs";    
private modal: ModalDialogService,

我可以调用一个模态,例如

  this.modal.showModal(MyModalComponent, options).then(res => {
      // console.log(res);
  }); 

现在我想关闭模态,但不是从模态本身内部。这已经在 iOS 中有效:

        const page = topmost().currentPage;
        if (page && page.modal) {
          page.modal.closeModal();
        } else {
          console.log("error closing modal!!!!");
        }

但是在 Android 上运行它,它总是会出现错误 console.log,导致模态不被关闭。用户仍然可以关闭它(模态框有一个关闭按钮),但我也想以编程方式关闭模态框。

【问题讨论】:

    标签: android angular modal-dialog nativescript


    【解决方案1】:

    这不是您在 Angular 中应该采用的方式。注入ModalDialogParams并使用closeCallback方法。

    constructor(private modalDialogParams: ModalDialogParams) {}
    
    onCloseButtonTap() {
        this.modalDialogParams.closeCallback();
    }
    

    【讨论】:

    • 这是我的 MyModalComponent 的构造函数吗?因为从 MyModalComponent 是的,我可以关闭它,但这需要用户交互。我想以编程方式关闭它。我知道有一个可观察的“修复”。
    • 它不需要任何用户交互。我把代码放在按钮点击上只是为了演示,关闭回调可以随时调用,无需用户交互。
    • 是的,但是我从您的代码中看不到的是 this.modalDialogParams.closeCallback();在实际的模态组件中或从父级调用。例如我有 app.component.ts ,在那里我使用 this.modal.showModal () 创建模态。现在我也想从 app.component.ts 关闭模态,而不是从我的实际模态组件(MyModalComponent)
    • 在这种情况下使用Injector 获取ModalDialogParams
    【解决方案2】:

    我有一个类似的问题,我最终做的是实现一个接口来激活另一个类的模态参数的 closeCallback。这是一个游乐场,展示了我所做的事情https://play.nativescript.org/?template=play-ng&id=q1mDZI&v=6

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多