Próbowałem użyć „ng zniszczyć składnik foo” i mówi mi: „Polecenie zniszczenia nie jest obsługiwane przez Angular-CLI”
Jak właściwie usuwamy komponenty za pomocą Angular CLI?
Próbowałem użyć „ng zniszczyć składnik foo” i mówi mi: „Polecenie zniszczenia nie jest obsługiwane przez Angular-CLI”
Jak właściwie usuwamy komponenty za pomocą Angular CLI?
Odpowiedzi:
destroy
lub coś podobnego może przyjść do CLI, ale obecnie nie jest to główny cel. Musisz to zrobić ręcznie.
Usuń katalog komponentów (zakładając, że nie korzystałeś --flat
), a następnie usuń go z tego, NgModule
w którym został zadeklarowany.
Jeśli nie masz pewności, co robić, sugeruję, aby mieć „czystą” aplikację, co oznacza brak bieżących git
zmian. Następnie wygeneruj komponent i zobacz, co zostało zmienione w repozytorium, abyś mógł stamtąd cofnąć się, co musisz zrobić, aby usunąć komponent.
Jeśli eksperymentujesz tylko z tym, co chcesz wygenerować, możesz użyć --dry-run
flagi, aby nie tworzyć żadnych plików na dysku, po prostu zobacz zaktualizowaną listę plików.
Ponieważ nie jest jeszcze obsługiwany przy użyciu kątowego interfejsu CLI
więc jest to możliwy sposób, przed tym proszę obserwować, co się dzieje, gdy tworzysz komponent / usługę za pomocą CLI (np. ng g c demoComponent
).
demoComponent
(ng g c demoComponent
).HTML,CSS,ts
ispec
plik dedykowany demoComponent.więc zrób to w odwrotnej kolejności
app.module.ts
usuwając zależność, musisz zrobić dwie rzeczy.
Obecnie Angular CLI nie obsługuje opcji usuwania komponentu, musisz to zrobić ręcznie.
Napisałem poniżej skrypt bash, który powinien zautomatyzować proces napisany przez Jakowa Faina. Można go nazwać jak ./removeComponent myComponentName Zostało to przetestowane tylko w 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
Nie jestem pewien, czy to najlepszy sposób, ale mi się udało.
Właśnie zapisałem i odświeżyłem aplikację i działała.
Odpowiedz na Angular 2+
Usuń składnik from imports and declaration array
app.modules.ts.
Po drugie sprawdź, czy odniesienie zostało dodane w innym module, jeśli tak, usuń go i
Wreszcie delete that component Manually
z aplikacji i gotowe.
Lub możesz to zrobić również w odwrotnej kolejności.
Z app.module.ts:
Następnie usuń folder komponentu, który chcesz usunąć, a jego ujęte plików ( .component.ts
, .component.html
, .component.css
i .component.spec.ts
).
Gotowe.
-
Czytam ludzi mówiących o usunięciu go z main.ts. Nie miałeś zaimportować go stamtąd, ponieważ już importuje AppModule, a AppModule importuje wszystkie utworzone przez ciebie komponenty.
Musiałem usunąć dyrektywę Angular 6, której plik specyfikacji był błędny. Nawet po usunięciu szkodliwych plików, usunięciu wszystkich odniesień do niego i przebudowaniu aplikacji, TS nadal zgłaszał ten sam błąd. Dla mnie zadziałało ponowne uruchomienie Visual Studio - to usunęło błąd i wszystkie ślady starej niechcianej dyrektywy.
Jeśli szukasz komendy w CLI, to Ans jest NIE teraz. Ale możesz to zrobić ręcznie, usuwając folder komponentu i wszystkie odniesienia.
Nie jest to obsługiwane przez Angular CLI i nie są w nastroju do włączenia go w najbliższym czasie.
Oto link do faktycznie utworzonego problemu - https://github.com/angular/angular-cli/issues/1776
git checkout src
).