Ho provato a usare "ng destroy component foo" e mi dice "Il comando destro non è supportato da Angular-CLI"
Come possiamo eliminare correttamente i componenti con la CLI angolare?
Ho provato a usare "ng destroy component foo" e mi dice "Il comando destro non è supportato da Angular-CLI"
Come possiamo eliminare correttamente i componenti con la CLI angolare?
Risposte:
destroy
o qualcosa di simile potrebbe venire alla CLI, ma al momento non è un obiettivo primario. Quindi dovrai farlo manualmente.
Eliminare la directory del componente (presupponendo che non sia stata utilizzata --flat
), quindi rimuoverla dalla NgModule
quale è stata dichiarata.
Se non sei sicuro di cosa fare, ti suggerisco di avere un'app "pulita", il che significa che non sono presenti git
modifiche. Quindi generare un componente e vedere cosa è cambiato nel repository in modo da poter tornare indietro da lì cosa sarà necessario fare per eliminare un componente.
Se stai solo sperimentando ciò che vuoi generare, puoi usare il --dry-run
flag per non produrre alcun file sul disco, basta vedere l'elenco dei file aggiornato.
Dal momento che non è ancora supportato utilizzando l'interfaccia della riga di comando angolare
quindi ecco il modo possibile, prima di ciò si prega di osservare cosa succede quando si crea un componente / servizio utilizzando l'interfaccia della riga di comando (es. ng g c demoComponent
).
demoComponent
( ng g c demoComponent
).HTML,CSS,ts
e un spec
file dedicato a demoComponent.quindi fallo nell'ordine inverso
app.module.ts
quando si rimuove la dipendenza bisogna fare due cose.
Attualmente la CLI angolare non supporta un'opzione per rimuovere il componente, è necessario farlo manualmente.
Ho scritto uno script bash che dovrebbe automatizzare il processo scritto da Yakov Fain di seguito. Può essere chiamato come ./removeComponent myComponentName Questo è stato testato solo con 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
Non sono sicuro che sia il modo migliore, ma ha funzionato per me.
Ho appena salvato e aggiornato l'app e ha funzionato.
Risposta per Angular 2+
Rimuovi il componente from imports and declaration array
di app.modules.ts.
In secondo luogo, il suo riferimento viene aggiunto in un altro modulo, se sì, rimuoverlo e
finalmente delete that component Manually
dall'app e il gioco è fatto.
Oppure puoi farlo anche in ordine inverso.
Da app.module.ts:
Quindi eliminare la cartella del componente che si desidera eliminare e le sue file inclusi ( .component.ts
, .component.html
,.component.css
e .component.spec.ts
).
Fatto.
-
Ho letto persone che dicevano di cancellarlo da main.ts. Non dovevi importarlo da lì in primo luogo poiché importa già AppModule e AppModule è quello che importa tutti i componenti che hai creato.
Avevo bisogno di eliminare una direttiva Angular 6 il cui file di specifiche era errato. Anche dopo aver eliminato i file offensivi, rimosso tutti i riferimenti ad esso e ricostruito l'app, TS stava ancora segnalando lo stesso errore. Ciò che ha funzionato per me è stato il riavvio di Visual Studio: questo ha eliminato l'errore e tutte le tracce della vecchia direttiva indesiderata.
Prima di tutto, rimuovere la cartella dei componenti, che è necessario eliminare, quindi rimuovere le relative voci create nei file "ts".
Se stai cercando un comando nella CLI, allora ans è NO per ora. Ma puoi farlo manualmente eliminando la cartella dei componenti e tutti i riferimenti.
Questo non è supportato dalla CLI angolare e non sono in vena di includerlo presto.
Ecco il link al problema reale creato - https://github.com/angular/angular-cli/issues/1776
git checkout src
).