Je commence à utiliser angular-cli et j'ai déjà beaucoup lu pour trouver une réponse à ce que je veux faire ... pas de succès, alors je suis venu ici.
Existe-t-il un moyen de créer un composant dans un nouveau module?
par exemple: ng g module newModule
ng g component newComponent
(comment ajouter ce composant à newModule ??)
car le comportement par défaut de angular-cli est de placer tous les nouveaux composants dans app.module
. J'aimerais choisir l'emplacement de mon composant afin de pouvoir créer des modules séparés sans avoir tous mes composants dans app.module
. Il est possible de le faire en utilisant angular-cli ou dois-je le faire manuellement?
Pour créer un composant dans le cadre d'un module, vous devez
ng g module newModule
pour générer un module, cd newModule
pour changer de répertoire dans le dossier newModule
ng g component newComponent
pour créer un composant en tant qu'enfant du module.ng g component nameComponent --module=app.module.ts
Pas sûr si peut-être la réponse d'Alexander Ciesielski était correcte au moment de la rédaction, mais je peux vérifier que cela ne fonctionne plus. Peu importe le répertoire dans le projet où vous exécutez la CLI angulaire. Si vous tapez
ng g component newComponent
il va générer un composant et l'importer dans le fichier app.module.ts
La seule façon d'utiliser CLI pour l'importer automatiquement dans un autre module consiste à spécifier
ng g component moduleName/newComponent
où nomModule est un module que vous avez déjà défini dans votre projet. Si le moduleName n'existe pas, le composant est placé dans le répertoire nomModule/newComponent mais reste importé dans app.module
Je n'ai pas trouvé de réponse indiquant comment utiliser le CLI pour générer un composant dans un dossier de module de niveau supérieur, mais également pour que le composant ajoute automatiquement la collection de déclarations du module.
Pour créer le module, exécutez ceci:
ng g module foo
Pour créer le composant dans le dossier du module foo et l'ajouter à la collection de déclarations de foo.module.ts, exécutez la procédure suivante:
ng g component foo/fooList --module=foo.module.ts
Et la cli échafaudera le module et le composant comme ceci:
--EDIT la nouvelle version du cli angulaire se comporte différemment. 1.5.5 ne veut pas d’un nom de fichier de module, la commande avec v1.5.5 devrait
ng g component foo/fooList --module=foo
Vous pouvez essayer la commande ci-dessous, qui décrit le,
ng -> Angular
g -> Generate
c -> Component
-m -> Module
Alors votre commande sera comme:
ng g c user/userComponent -m user.module
c'est ce qui a fonctionné pour moi :
1 --> ng g module new-module
2 --> ng g c new-module/component-test --module=new-module/new-module.module.ts
Si vous souhaitez générer un composant sans son répertoire, utilisez --flat
flag.
Pour Angular v4 et ci-dessus, utilisez simplement:
ng g c componentName -m ModuleName
Utilisez cette commande simple:
ng g c users/userlist
users
: le nom de votre module.
userlist
: le nom de votre composant.
J'ai créé un module enfant basé sur des composants avec un dossier racine spécifique
Cette commande cli ci-dessous, je précise, s'il vous plaît vérifier
ng g c Repair/RepairHome -m Repair/repair.module
Réparation est le dossier racine de notre module enfant
-m est --module
c pour le décompte
g pour générer
Selon Angular docs, la manière de créer un composant pour un module spécifique est la suivante:
ng g component <directory name>/<component name>
"nom du répertoire" = où la CLI a généré le module de fonctionnalité
Exemple :-
ng generate component customer-dashboard/CustomerDashboard
Cela génère un dossier pour le nouveau composant dans le dossier customer-dashboard et met à jour le module de fonctionnalité avec le CustomerDashboardComponent
ng g m modules/media
cela générera un module appelé media
dans le dossier modules
.
ng g c modules/media/picPick --module=modules/media/media.module.ts
la première partie de la commande ng g c modules/media/picPick
générera un dossier de composant appelé picPick
dans le dossier modules/media
qui contient notre nouveau module media
.
la deuxième partie va déclarer notre nouveau composant picPick
dans le module media
en l'important dans le fichier de module et en l'ajoutant au tableau declarations
de ce module.
Si vous avez plusieurs applications déclarées dans .angular-cli.json (par exemple, si vous travaillez sur le module de fonctionnalité)
"apps": [{
"name": "app-name",
"root": "lib",
"appRoot": ""
}, {...} ]
Vous pouvez :
ng g c my-comp -a app-name
-a signifie --app (nom)
Ajouter un composant à l'application Angular 4 à l'aide de l'interface CLI angulaire
Pour ajouter un nouveau composant Angular 4 à l'application, utilisez la commande ng g component componentName
. Après exécution de cette commande, Angular CLI ajoute un dossier component-name
sous src\app
. De plus, les références du même sont ajoutées au fichier src\app\app.module.ts
automatiquement.
Un composant doit avoir une fonction décoratrice @Component
suivie d'une class
qui doit être export
ed. La fonction de décorateur @Component
accepte les métadonnées.
Ajouter un composant dans un dossier spécifique de l'application Angular 4 à l'aide de l'interface CLI angulaire
Pour ajouter un nouveau composant à un dossier spécifique, utilisez la commande ng g component folderName/componentName
J'ai des problèmes similaires avec plusieurs modules en application. Un composant peut être créé sur n'importe quel module. Avant de créer un composant, nous devons donc spécifier le nom du module concerné.
'ng generate component newCompName --module= specify name of module'
Première exécution ng g module newModule
. Puis exécutez ng g component newModule/newModule --flat
Je travaille actuellement sur des projets angulaires 5 et j'utilise cette commande particulière pour générer des composants dans un module.
ng g c <module-name>/<new-component-name>
Cette commande générera un composant local au module si vous utilisez la commande normale, par exemple
ng g c <component-name>
il va générer un composant dans le module d'application a.k.a module racine.
Remarque: le code entre <> représente des noms spécifiques à l'utilisateur.