J'ai essayé d'utiliser "ng destroy component foo" et il me dit "La commande destroy n'est pas prise en charge par Angular-CLI"
Comment supprimer correctement les composants avec Angular CLI?
J'ai essayé d'utiliser "ng destroy component foo" et il me dit "La commande destroy n'est pas prise en charge par Angular-CLI"
Comment supprimer correctement les composants avec Angular CLI?
Réponses:
destroy
ou quelque chose de similaire peut arriver à la CLI, mais ce n'est pas un objectif principal pour le moment. Vous devrez donc le faire manuellement.
Supprimez le répertoire du composant (en supposant que vous ne l'avez pas utilisé --flat
), puis supprimez-le de celui NgModule
dans lequel il est déclaré.
Si vous ne savez pas quoi faire, je vous suggère d'avoir une application "propre" qui ne signifie aucun git
changement en cours. Générez ensuite un composant et voyez ce qui est modifié dans le référentiel afin que vous puissiez revenir en arrière de ce que vous devrez faire pour supprimer un composant.
Si vous expérimentez simplement ce que vous voulez générer, vous pouvez utiliser l' --dry-run
indicateur pour ne produire aucun fichier sur le disque, il suffit de voir la liste des fichiers mis à jour.
Puisqu'il n'est pas encore pris en charge en utilisant la CLI angulaire
voici donc la manière possible, avant cela, veuillez observer ce qui se passe lorsque vous créez un composant / service à l'aide de CLI (ex. ng g c demoComponent
).
demoComponent
( ng g c demoComponent
).HTML,CSS,ts
et un spec
fichier dédié à demoComponent.alors faites-le dans l'ordre inverse
app.module.ts
lors de la suppression de la dépendance, vous devez faire deux choses.
À l'aide de Visual Studio Code, supprimez le dossier des composants et voyez dans l'Explorateur de projets (côté gauche) les fichiers de couleur rouge, ce qui signifie que les fichiers sont affectés et produisent des erreurs. Ouvrez chaque fichier et supprimez le code qui utilise le composant.
Actuellement, la CLI angulaire ne prend pas en charge une option pour supprimer le composant, vous devez le faire manuellement.
J'ai écrit un script bash qui devrait automatiser le processus écrit par Yakov Fain ci-dessous. Il peut être appelé comme ./removeComponent myComponentName Cela n'a été testé qu'avec Angular 6
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Input a component to delete"
exit 1
fi
# finds folder with component name and deletes
find . -type d -name $1 | xargs rm -rf
# removes lines referencing the component from app.module.ts
grep -v $1 app.module.ts > temp
mv temp app.module.ts
componentName=$1
componentName+="Component"
grep -v -i $componentName app.module.ts > temp
mv temp app.module.ts
Je ne sais pas si c'est la meilleure façon, mais cela a fonctionné pour moi.
Je viens de sauvegarder et de rafraîchir l'application et cela a fonctionné.
Réponse pour Angular 2+
Supprimez le composant from imports and declaration array
app.modules.ts.
Vérifiez ensuite que sa référence est ajoutée dans un autre module, si oui, supprimez-la et
enfin delete that component Manually
depuis l'application et vous avez terminé.
Ou vous pouvez également le faire dans l'ordre inverse.
Depuis app.module.ts:
Ensuite , supprimez le dossier du composant que vous souhaitez supprimer et ses fichiers inclus ( .component.ts
, .component.html
, .component.css
et .component.spec.ts
).
Terminé.
-
J'ai lu des gens dire de l'effacer de main.ts. Vous n'étiez pas censé l'importer à partir de là, car il importe déjà AppModule, et AppModule est celui qui importe tous les composants que vous avez créés.
J'ai dû supprimer une directive Angular 6 dont le fichier de spécifications était erroné. Même après avoir supprimé les fichiers incriminés, supprimé toutes les références et reconstruit l'application, TS signalait toujours la même erreur. Ce qui a fonctionné pour moi, c'était le redémarrage de Visual Studio - cela a effacé l'erreur et toutes les traces de l'ancienne directive indésirable.
Tout d'abord, supprimez le dossier des composants, que vous devez supprimer, puis supprimez ses entrées que vous avez faites dans les fichiers "ts".
Si vous recherchez une commande dans CLI, alors ans est NON pour l'instant. Mais vous pouvez le faire manuellement en supprimant le dossier des composants et toutes les références.
Ce n'est pas pris en charge par Angular CLI et ils ne sont pas d'humeur à l'inclure de sitôt.
Voici le lien vers le problème réel créé - https://github.com/angular/angular-cli/issues/1776
git checkout src
).