代码之家  ›  专栏  ›  技术社区  ›  jraspante

在模态上显示模态,但第二个模态正在关闭自身。离子3

  •  0
  • jraspante  · 技术社区  · 8 年前

    我在用离子3,我试图打开另一个模态。第一个模式显示一个已经填充的表单,如果用户想要删除所有数据,它将打开另一个模式,要求一个理由。第二种模式是关闭自身而不进行任何单击或用户交互。

    是什么导致了这个错误?

    第一个模态在这里被称为:

    日历.ts

    openEvento(evento){
          let modal = this.modal.create(EventoPage, {'evento': evento, 'isNewEvent': false }, {cssClass: "modalevento"});
          modal.present();
    } 
    

    在事件中,我称之为第二个模态。

    private deletarEvento() {
            let modal = this.modal.create(JustificativaPage, {}, { cssClass: 'modal-justificativa'});
            modal.onDidDismiss(data => {
                console.log(data);
            })
            modal.present();
    }
    

    对齐页显示并关闭自身。 这是justivativage.ts的代码

    export class JustificativaPage{
        private justificativa: string = "";
        constructor(private viewCtrl: ViewController){}
        solicitar(){
            if(this.justificativa == ""){ }
            else{
                console.log(this.justificativa)
                this.viewCtrl.dismiss(this.justificativa);
            }        
        }
        modalDismiss(){
            this.viewCtrl.dismiss();
        }
    }
    

    调整页面.html

    <ion-header>
        <ion-label>Deseja Solicitar Cancelamento?</ion-label>
         <button class="dismiss-button" (click)="modalDismiss()">
                <ion-icon name="ios-close-outline"></ion-icon>
            </button>
    </ion-header>
    
    <ion-content padding>
        <h5>Digite abaixo o motivo do cancelamento</h5>
        <form (ngSubmit) = "solicitar()">
            <ion-item>
                <ion-label stacked>Justificativa</ion-label>
                <ion-textarea [(ngModel)]="justificativa" name="justificativa" placeholder="Digite aqui o motivo do cancelamento do evento"></ion-textarea>
            </ion-item>
            <button ion-button color="danger">Fechar</button>
            <button type="submit" ion-button color="primary">Solicitar</button>
        </form>
    </ion-content>
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Sandy.....    8 年前

    在创建以下模式时,必须通过添加enablebackdropdisside选项来更新代码:

    let modal = this.modal.create(EventoPage, {'evento': evento, 'isNewEvent': false }, { enableBackdropDismiss: false, cssClass: "modalevento"});
    let modal = this.modal.create(JustificativaPage, {}, { enableBackdropDismiss: false, cssClass: 'modal-justificativa'});
    

    有关详细信息,请参阅此文档链接 https://ionicframework.com/docs/api/components/modal/ModalController/#advanced

    请注意,当打开多个modal时,它们会附加到DOM中。所以您首先打开的是哪种模式,它将首先附加到DOM。

    而且,所有的模态都有相同的css,因此后面的模态隐藏在第一个模态之后。

    您需要通过覆盖每个模式的默认CSS(即z-index)来定制这些模式,以便无论它们以何种顺序打开,最后一个模式都将在先前打开的模式上打开。