打开后更改 NgbModal 大小

Change NgbModal size after open

我有一个最初有尺寸的模态框,但我希望模态框在我更改表单中的某个值时改变尺寸。

我在启动模态的组件 .ts 文件中有这个

const modalRef = this.modalService.open(ModalFormComponent, { size : 'xl', scrollable: true });

如果模态中的信息发生变化,模态大小需要更改为lg

NgbModalclassreturns和NgbModalRef的open方法。 NgbModalRef的_windowCmptRef.instance.size属性定义了当前打开的Bootstrap模态(NgbModal)的大小属性。

现在的问题是如何从弹出组件访问NgbModalRef。一种方法是在服务中定义引用对象。像这样

import { Injectable } from '@angular/core';
@Injectable({
  providedIn: 'root'
})
export class MyserviceService {
  public modalRef: any;  //modalRef will be stored in this variable
  constructor() { }
}

现在像这样打开 NgbModal

this.myService.modalRef = this.ngbModalService.open(PopupComponent,  { size : 'xl', scrollable: true });

PopupComponent 中,您可以像这样更改模式的大小

this.myService.modalRef._windowCmptRef.instance.size='sm'; //the size property would be changed to small size.

谢谢。