2017-04-24 1 views
0

J'ai un projet sur Angular. J'apprends que je dois déclarer chaque module qui a beaucoup de fonctionnalités à un niveau supérieur sur mon application et il sera disponible sur tous mes composants et sous-modules. Mais j'ai un cas particulier avec une directive. J'ai fait une directive simple et l'importer sur mon app.module.ts.Déclaration de directive

J'ai fait ce schéma pour une meilleure compréhension:

enter image description here

Je veux utiliser cette directive sur un composant qui fait partie d'un autre module (ce module est déclaré sur mon app.module.ts aussi). J'ai donc mis ma directive sur cette composante et ça ne marche pas. Mais si je déplace l'importation vers ce sous-module, cela fonctionne.

Que puis-je déclarer sur un module de plus haut niveau et quelles choses ne le devrais-je pas?

Répondre

3

Un module angulaire fournit une résolution de modèle. Tout composant imbriqué, directive ou canal utilisé par un modèle associé à un composant déclaré dans un module Angular doit également être déclaré ou importé dans ce module Angular.

Vous pouvez partager des composants, des directives et des canaux à l'aide d'un module partagé.

Voir cette vidéo pour plus d'informations sur la résolution modèles et modules partagés: https://www.youtube.com/watch?v=ntJ-P-Cvo7o&t=4s

+0

votre présentation est tellement incroyable! J'aurais voulu être là! Mes confusions concernent l'héritage avec les modules. Je pensais que si j'ai un service déclaré sur le module supérieur, il sera disponible sur l'application souhaitée. C'est vrai selon votre présentation. Je ne devrais pas déclarer un service sur différents modules. Et les directives? Applique de la même manière des services, non? Le concept d'avoir un module partagé est génial. Merci beaucoup d'avoir pris votre temps pour ça. Je l'apprécie trop. –

+0

Merci beaucoup! Les services déclarés au niveau du module sont disponibles pour tous les composants de l'application. Les directives sont déclarées ou importées dans un module spécifique et ne sont disponibles que pour les composants déclarés dans ce module. J'espère que cela t'aides! – DeborahK