Angular2, générique superposition composant pour tous les autres composants à l'intérieur de l'app
J'ai les deux composants suivants:
superposition
@Component({
selector: 'overlay',
template: '<div class="check"><ng-content></ng-content></div>'
})
export class Overlay {
save(params) {
//bunch of stuff that are commonly used
}
}
myComponent (il y a beaucoup plus de ce genre)
@Component({
selector: 'myComponent',
directives: [Overlay],
template: '<overlay><form (ngSubmit)="save({ name: 'sam', lastName: 'jones' })">I'm the component. Click <input type="submit">Here</input> to save me!</form></overlay>'
})
export class MyComponent {
}
Ces solutions ne fonctionne pas sans erreurs jeté, Angular2 simplement saute les deux composants de l'initialisation. De toute façon, je pense que vous obtenez l'idée. Il y a un élément commun qui aura besoin d'envelopper beaucoup d'autres composants, par conséquent, il doit être générique. Il a un template
de sorte que les services ne pas faire le travail. Je n'ai pas beaucoup travaillé avec des annotations personnalisées, peut-être qu'ils pourraient faire quelque chose comme cela? Toute réflexion sur la manière de parvenir à cette fonctionnalité?
remarque: la superposition contient la logique et le modèle, qui sont tous deux nécessaires à un autre composant qui a besoin de l'utiliser. Le modèle est un complexe de dialogue modale, avec des animations, des messages, des fondus etc... qui est commun à travers la solution.
Mise à jour
Trouvé ceci: Angular2: le progrès, le chargement, la superposition de la directive
Dans ce cas, un bootstrap modal doit être montré et enlevé. Il a un contenu comme je l'ai mentionné, alors, comment un
directive
de stocker et d'afficher ce contenu?
OriginalL'auteur RoninCoder | 2016-06-21
Vous devez vous connecter pour publier un commentaire.
Ok peut-être que ce n'est pas une réponse directe à votre question, mais à partir de votre commentaire, je suppose que vous voulez mettre en œuvre des modaux à l'intérieur de votre application. Je ne l'ai pas fait, mais encore dans un avenir proche je vais (c'est la partie de mon application de l'exigence).
D'abord je ne suis pas d'utiliser bootstrap javascript parce que je suis en utilisant angulaire déjà. La seule chose que vous avez besoin est de bootstrap css.
considérer au-dessous de la racine modèle:
montrer votre modal: Événement Mondial
Vous pouvez montrer votre modal de toute
component
. L'astuce consiste à injecter unmodal-service
pour envoyer un événement mondial. voir cette réponse pour voir comment il fonctionne.Vous pouvez envoyer n'importe quel objet comme
event
. Cet événement objet contient votre modale du contenu ou de l'unkey
donc modalcomponent
pouvez chercher où ailleurs.ModalComponent
Votre
ModalComponent
devez vous abonner à l'événement. Sur l'événement vous pouvez afficher et masquer (la composante modale) de plusieurs façons que je suis sûr que vous êtes conscient de. À l'aide de structurels directives est une.Style
Modal est un conteneur (
.modal-container
) avecwidth
etheight
de fenêtre d'affichage avec un fond transparent. Modale du contenu (.modal-content
) est un autre récipient fixewidth
etheight
etabsolute
position. Si vous voulez bootstrap styles vous pouvez l'ajouter et pour les animations, vous pouvez utiliser angulaire des animationsJe suis actuellement en utilisant une approche similaire pour la barre de menu et ça fonctionne très bien!!
OriginalL'auteur Seyed Jalal Hosseini
J'ai créé un pour cette tâche spécifique et de la pensée sur l'incorporation de bootstrap modale en tant que modèle, mais est tombé sur un couple de questions telles que le fait que la seule pièce utile de bootstrap modal serait la classe des noms. Il n'est pas surprenant, ne voulait pas que pour cette tâche depuis que j'nécessaire de faire la distinction entre la fenêtre des modaux et les progrès des modaux sur les composants.
Superposition
Utilisation
Comme il est, vous aurez besoin d'un parent conteneur pour
overlay
pour remplir son parent. Le css certainement besoin de modifications pour prendre en compte quelques-uns des scénarios tels que les appareils mobiles et non-placés dans des conteneurs. Voici comment il est utilisé actuellement:HTML
Après l'enregistrement de l'
form
, unoverlay
est indiqué dans lecontainerElement
pour 400ms et est disparu et va cachée par la suite jusqu'à la prochaine tentative de sauver. LeisSaving
etisSaved
des valeurs contraignantes sont de la responsabilité de tout élément qui souhaite utiliser l'overlay
.OriginalL'auteur RoninCoder