Comment utiliser le code pour ouvrir un modal Angulaire 2?
Habituellement, nous utilisons data-target="#myModal"
dans le <button>
pour ouvrir un modal. Droit maintenant, j'ai besoin de codes pour contrôler le moment d'ouvrir le modal.
Si j'utilise [hidden]
ou *ngIf
pour le montrer, j'ai besoin de supprimer class="modal fade"
, sinon, le modal ne s'affichera jamais. Comme ceci:
<div [hidden]="hideModal" id="myModal">
Toutefois, dans ce cas, après la suppression de class="modal fade"
, le modal ne se fanera pas et n'a pas d'ombre dans le fond. Et ce qui est pire, il affichera en bas de l'écran au lieu de l'écran centre.
Est-il un moyen de garder class="modal fade"
et utilisez le code pour l'ouvrir?
<button type="button" data-toggle="modal" data-target="#myModal">Open Modal</button>
<div id="myModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<p>Some text in the modal.</p>
</div>
</div>
</div>
</div>
- pourquoi utiliser
[hidden]
modale ? - Comme je l'ai dit, [masqué] et class="modal fade" ensemble modal ne sera jamais la même [hidden]="false". Si tu veux utiliser [caché], u besoin de supprimer class="modal fade"
Vous devez vous connecter pour publier un commentaire.
C'est une façon que j'ai trouvée. Vous pouvez ajouter un bouton caché:
Ensuite utiliser le code "cliquez" sur le bouton pour ouvrir le modal:
De cette façon peut garder le bootstrap style de le modal et le fondu dans l'animation.
http://valor-software.com/ng2-bootstrap/#/modals
résultats dans un 404 aujourd'hui...Inclure jQuery comme d'habitude à l'intérieur des balises script dans index.html.
Après toutes les importations, mais avant de déclarer @Composant, ajouter:
Maintenant, vous êtes libre de les utiliser jQuery n'importe où dans votre Angulaire 2 Tapuscrit code:
Référence: https://stackoverflow.com/a/38246116/2473022
Moyen facile d'atteindre cet objectif dans angulaire 2 ou 4 (en Supposant que vous utilisez bootstrap 4)
HTML:
Voici ma pleine mise en œuvre de modal bootstrap angular2 composant:
Je suppose que dans votre main index.html fichier (avec
<html>
et<body>
tags) au bas de<body>
tag vous avez:modal.composante.ts:
modal.html:
Et exemple d'utilisation du client de l'Éditeur de composant:
client-modifier-composant.ts:
client-edit.html:
Bien sûr du titre, showClose, mhead et mfoot ar paramètres facultatifs.
input
est cliqué. Mais le compilateur ne peut pas trouverthis.el.modal
outhis.el.nativeElement.modal()
$().modal
. C'est dans l'une des réponses ci-dessousngAfterViewInit
et méthodesopen/close
j'ai en fait l'utiliser. Cependant, dans cette réponse, l'objectif était de fournir de travail "modal" composant (avec un exemple d'utilisation) - mais c'était il y a 2 ans donc peut-être maintenant il est obsolète.declare var $: any;
. Je m'attendais à ce que je l'ai déjà inclusjquery
dans mon projet, je devrais être en mesure d'utiliser$
n'importe où. Aussi, votre commentaire quebecouse this override jQuery which was changed by bootstrap
. Ne Bootstrap est venu avec sa propre mise en œuvre deJQuery
?declare var $:any
, nous déclarons une variable qui existe quelque part dans le JS - trouvé à partir d'une autre question, dans laMeilleure façon que j'ai trouvé. Mettre
#lgModal
ou de quelque autre nom de la variable dans votre modal.De votre point de vue:
Dans votre composant
Ci-dessous la réponse est en référence à la dernière ng-bootstrap
Installer
app.le module.ts
Composant Contrôleur
Composant HTML
Crois que j'ai trouvé la bonne façon de le faire à l'aide de ngx-bootstrap. D'abord importer les classes suivantes:
À l'intérieur de la classe d'implémentation du composant ajouter un @ViewCild propriété, une fonction pour ouvrir le modal et ne pas oublier de configurer modalService comme une propriété privée à l'intérieur de l'composants constructeur de la classe:
Le " editSomething partie de la @ViewChild déclaration se réfère au modèle de composant fichier et son modale du modèle de mise en œuvre (#editSomething):
Et finalement l'appel à la méthode pour ouvrir le modal où vous le souhaitez comme suit:
Et le tour est joué! Le modal définis dans votre modèle de composant de fichier est indiqué par un appel à partir de l'intérieur de votre classe de composant de mise en œuvre. Dans mon cas, j'ai utilisé cette option pour afficher un modal à l'intérieur d'un gestionnaire d'événement.
Je suis actuellement en utilisant Bootstrap 4.3 Angulaire 8 et que vous voulez ouvrir fenêtre modale par programme (sans réellement en cliquant sur quelques boutons que la démo officielle montre).
Méthode suivante fonctionne pour moi:
L'idée générale est de créer un bouton associé à une fenêtre modale.
D'abord assurez-vous que lorsque vous cliquez sur ce bouton, il peut ouvrir la modale.
Donnez à cette balise button un id à l'aide de hashtag, par exemple
#hiddenBtn
.Dans le volet fichier ts,
import ViewChild from @angular/core
et écrire le code ci-dessous:Après cela, chaque fois que vous voulez ouvrir cette fenêtre modale dans votre composant ts code, écrire de code suivant pour simuler cliquez sur le fonctionnement
La Façon dont j'ai utilisé pour le faire sans beaucoup de codage est..
J'ai le bouton caché avec le
id="employeeRegistered"
Sur mon
.ts
fichier jeimport ElementRef from '@angular/core'
Puis après j'ai du processus tout sur mon
(click)
méthode de faire comme suit:this.el.nativeElement.querySelector('#employeeRegistered').click();
puis le modal affiche comme prévu..
Pour moi, j'ai dû settimeout en plus de @arjun-sk solution (lien), comme j'avais la erreur
Je suis l'aide d'une variable de contrôle d'afficher et de masquer et de s'appuyer sur le bouton pour ouvrir la modale
ts code:
html:
Nous pouvons utiliser jquery pour ouvrir modal bootstrap.