J'utilise Angular 2, je travaille avec un formulaire modal. J'ai deux composants. À partir d'un composant, j'ouvre le formulaire modal de la manière suivante:
import { Component, OnInit, Output} from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { MyFormComponent } from '......./....';
@Component({
moduleId: module.id,
selector: 'my-component',
templateUrl: 'my-component.html'
})
export class MyComponent implements OnInit {
private anyData: any;
private anyDataForm: any;
constructor(
private modalService: NgbModal
) { }
ngOnInit(): void {
}
open() {
const modalRef = this.modalService.open(MyFormComponent, { size: 'lg' });
modalRef.componentInstance.anyDataForm = this.anyData;
}
possibleOnCloseEvet() {
//Do some actions....
}
}
La méthode open () se déclenche à partir d'un bouton de my-composant.html
Et sur le composant Form (le modal), je l’utilise pour fermer le modal actuel (de lui-même)
import { Component, OnInit, OnDestroy, Input } from '@angular/core';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
@Component({
moduleId: module.id,
selector: 'my-form-component',
templateUrl: 'my-form-component.html'
})
export class MyFormComponent implements OnInit, OnDestroy {
@Input() anyDataForm: any;
constructor(
public activeModal: NgbActiveModal
) {
}
ngOnInit(): void {
}
//Some form code...
OnSubmit() {
this.activeModal.close(); //It closes successfully
}
ngOnDestroy(): void {
}
}
Ce que je dois faire est de déclencher une sorte d'événement "à la fermeture" sur le composant appelant pour effectuer certaines actions sur l'appelant uniquement lorsque le modal est fermé. (ne peut pas utiliser l'événement emmiter)
Existe-t-il un moyen pour l'ouvre-composant de savoir quand le modal se ferme? Je n'ai trouvé aucun exemple clair de cela.
Essaye ça:
const modalRef = this.modalService.open(MyFormComponent, { size: 'lg' });
modalRef.componentInstance.anyDataForm = this.anyData;
modalRef.result.then((data) => {
// on close
}, (reason) => {
// on dismiss
});
dans MyFormComponent, vous pouvez ajouter closeModal () {this.activeModal.close (n'importe quoi); }
Sur mon Composant Modalform
this.activeModal.close('success');
Puis sur mon composant parent ListComponent
this.modalRef = this.modalService.open(ModalformComponent);
this.modalRef.componentInstance.title = 'Add Record';
this.modalRef.result.then((result) => {
if ( result === 'success' ) {
this.refreshData(); // Refresh Data in table grid
}
}, (reason) => {
});