2017-07-16 2 views
4

J'ai une page angulaire 4 comprenant un modal ng-bootstrap. Mon code ressemble à ceci.Ouvert ng-bootstrap modal par programme

foo.html

[...] 
<button class="btn btn-sm btn-secondary material-icons" 
(click)="open(content)">search</button> 

<ng-template #content let-c="close" let-d="dismiss"> 
    content in here 
</ng-template> 
[...] 

foo.ts

[...] 
constructor(private modalService: NgbModal) { } 
[...] 
open(content) { 
    let options: NgbModalOptions = { 
    size: 'lg' 
    }; 

    this.modalService.open(content, options); 
} 
[...] 

Maintenant, quand je clique sur le bouton modal ouvre. Ce que je veux faire maintenant, c'est ouvrir le modèle sur ngChanges.

ngOnChanges(changes: any) { 
    open(content) 
} 

Mon problème est: Comment obtenir le "contenu" ici? Est-il possible d'obtenir le ng-template par programme? Merci d'avance!

Répondre

8

Dans le module complémentaire du constructeur:

import { ViewChild } from '@angular/core'; 

avant constructeur(), ajouter:

@ViewChild('content') private content; 

et enfin:

ngOnChanges(changes: any) { 
    this.open(this.content); 
} 
+1

Merci, cela a fonctionné! –

+1

Solution simple et efficace! (y) – BCoder