Saltar al contenido

Práctica recomendada para llamar al método abierto NgbModal

Solución:

A partir de hoy open El método de https://ng-bootstrap.github.io/#/components/modal tiene la siguiente firma: open(content: string | TemplateRef<any>, options: NgbModalOptions). Como puede ver en esta firma, puede abrir un modal que proporcione contenido como:

  • string
  • TemplateRef

los string-El argumento de tipo no es muy interesante; de ​​hecho, se agregó principalmente para ayudar a la depuración / prueba unitaria. Al usarlo, puede pasar solo … bueno, un fragmento de texto, sin ningún marcado, no directivas angulares. Como tal, es realmente una herramienta de depuración y no algo que sea útil en escenarios de la vida real.

los TemplateRef El argumento es más interesante ya que le permite pasar las directivas de marcado + que se mostrarán. Puedes echarle una mano a un TemplateRef haciendo <template #refVar>...content goes here...</template> en algún lugar de la plantilla de su componente (una plantilla de un componente desde el que planea abrir un modal). Como tal, el TemplateRef El argumento es poderoso ya que le permite tener marcado, directivas, otros componentes, etc. La desventaja es que TemplateRef es útil solo si está abriendo un modal desde un componente con una plantilla.

Tengo la impresión de que está buscando la función que está planificada pero que aún no se implementó: la capacidad de abrir un modal con un tipo de componente como contenido. Funcionaría de la siguiente manera: modalService.open(MyComponentWithContent). Como mencioné, esto es parte de la hoja de ruta, pero aún no se ha implementado. Puede rastrear esta función siguiendo https://github.com/ng-bootstrap/ng-bootstrap/issues/680

Ahora puede hacer lo siguiente …

Supongamos que tiene un componente de modelo. Confirme el modelo de que desea utilizarlo en cualquier otro componente.

  1. ModelComponentName se agrega a las declaraciones y las secciones entryComponent en module.ts
  2. No olvide agregar NgbModule.forRoot () en las importaciones de su archivo de módulo que contiene las declaraciones que mencionó anteriormente.
  3. Asegúrese de que la plantilla de componente de su modelo esté dentro de la etiqueta div y no en la etiqueta ng-template.

A continuación, puede utilizar el siguiente método abierto desde cualquier otro componente.

modalReference: NgbModalRef;
constructor(private modalService: NgbModal) { }
this.modalReference = this.modalService.open(ModelComponentName, {backdrop: 'static',size: 'lg', keyboard: false, centered: true});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *