Comment créer une popup modale compatible avec Angular 4
Je veux être en mesure de créer une fenêtre pop-up qui vous permettra de charger un certain Angulaire 4 composante de la mienne quand un bouton radio est sélectionné.
Il semble que l'une des méthodes indiquées dans les réponses à cette question ne sont compatibles qu'avec Angulaire 2.
Je ne suis pas sûr où commencer et serais reconnaissant de toute aide!
source d'informationauteur Luca Guarro
Vous devez vous connecter pour publier un commentaire.
Vérifier Angulaire Matériel De Dialoguevoici la Plunker
La accepté de répondre ajoute une grande dépendance d'écraser une mouche. Modal (et non modale) les dialogues sont en grande partie le résultat d'une classe CSS ou deux. Essayez cette "renommer..." exemple:
1) Écrire le parent et l'enfant-modale comme si l'enfant n'est pas modale, mais juste une ligne de forme avec *ngIf ci-joint.
Parent HTML qui utilise
<my-modal>
enfant:Classe Parent. Le
@Component
décorateur omis par souci de concision. (Lename
propriété appartient à la classe parent et existerait même si nous n'avions pas une forme de la modifier.)Enfant à être modale composant.
@Component
décorateur et importations de nouveau omis.Enfant de HTML avant modal-izing.
2) Voici le CSS pour enfant, mais il peut être placé dans une feuille de style pour les ré-utiliser dans votre application. C'est une classe unique appelé
modal
et est prévu pour une<div>
élément.Mais la
modal
classe CSS qui ne l'empêchera pas d'interagir avec la page en dessous. (Donc techniquement crée une boîte de dialogue non modale.) Nous avons donc passer uneoverlay
sous la modale d'absorber et d'ignorer l'activité de souris.overlay
est également prévu pour un<div>
élément.3) Utiliser le
modal
etoverlay
de l'enfant HTML.Et c'est tout. Fondamentalement, 2 classes CSS et vous pouvez faire toute composante modale. En fait, vous pouvez afficher un élément en-ligne ou comme un modal au moment de l'exécution juste en modifiant l'existence de la classe CSS avec
ngClass
ou[class.modal]="showAsModalBoolean"
.Vous pouvez modifier ce de sorte que l'enfant contrôles de l'exposition/masquer la logique. Déplacer le *ngIf, showIt, et show() dans l'enfant. Dans le parent ajouter
@ViewChild(MyModalComponent) renameModal: MyModalComponent;
et puis le parent peut impérativement appelerthis.renameModal.show(this.name);
et re-câbler l'initialisation et contenant des divs en tant que de besoin.L'enfant-modale peut retourner les informations à un parent fonction comme indiqué ci-dessus, ou de l'enfant
show()
méthode pourrait accepter plutôt un rappel ou un retour d'une Promesse, que par le goût.Deux choses à savoir:
this.renameModal.show(..);
ne fonctionnera pas si il y a un *ngIf sur<my-modal>
car il n'existe pas d'exposer la fonction pour commencer. *ngIf supprime le composant entier, show() et la fonction de tous, afin de l'utiliser[hidden]
à la place si vous en avez besoin pour une raison quelconque.Les auxiliaires modaux-sur-modaux aura z-index problèmes, car ils partagent tous le même z-index. Cela peut être résolu avec
[style.z-index]="calculatedValue"
ou similaire.