J'essaie d'utiliser un composant que j'ai créé dans le module AppModule dans d'autres modules. Je reçois l'erreur suivante si:Angular 2 'component' n'est pas un élément connu
"Uncaught (in promise): Error: Template parse errors:
'contacts-box' is not a known element:
- If 'contacts-box' is an Angular component, then verify that it is part of this module.
- If 'contacts-box' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
Ma structure de projet est assez simple:
Je garde mes pages dans le répertoire de pages, où chaque page est maintenue dans les différents modules (par exemple-module clients) et chaque module a plusieurs composants (comme client-list-component, clients-add-component et ainsi de suite). Je veux utiliser mon ContactBoxComponent dans ces composants (donc à l'intérieur de clients-add-component par exemple).
Comme vous pouvez le voir, j'ai créé le composant de boîte de contacts à l'intérieur du répertoire de widgets de sorte qu'il se trouve essentiellement dans l'AppModule. J'ai ajouté l'importation ContactBoxComponent à app.module.ts et l'ai placée dans la liste des déclarations de AppModule. Cela n'a pas fonctionné, j'ai donc googlé mon problème et ajouté ContactBoxComponent à la liste d'exportation. N'a pas aidé. J'ai également essayé de placer ContactBoxComponent dans CustomersAddComponent et ensuite dans un autre (de module différent) mais j'ai eu une erreur disant qu'il y a plusieurs déclarations.
Qu'est-ce qui me manque?
Vos mesures ne m'a pas aidé, mais peut-être parce que je suis assez nouveau pour angulaire 2, donc je ll leur répondra et peut-être nous trouverons la solution ensemble. Je suis sûr que le nom est correct, j'ai déclaré le composant dans AppModule, j'ai exporté le composant dans AppModule et j'ai redémarré le cli. J'ai également essayé d'importer AppModule dans mon CustomersAddComponent mais cela a abouti à Erreur: La taille maximale de la pile d'appels a été dépassée (je suppose que nous n'importons pas AppModule dans Angular 2). – Aranha
Vous devez déclarer et exporter votre composant dans un module sepperate, pas dans AppModule. Ensuite, vous devriez importer ce nouveau module dans everymodule vous wnat pour utiliser votre composant. –
D'accord, je comprends maintenant. La seule question est: quand j'importe le module nouvellement créé (disons WidgetsModule) il chargerait aaaaaall les composants déclarés à l'intérieur, non? C'est un peu frais mais peut-être que je ne comprends pas quelque chose. Je pourrais bien sûr créer ContactsBoxModule mais c'est beaucoup pour un petit composant. Des indices? – Aranha