Я спробував використовувати "ng знищити компонент foo", і це говорить мені "Команда знищення не підтримується Angular-CLI"
Як ми правильно видаляємо компоненти за допомогою Angular CLI?
Я спробував використовувати "ng знищити компонент foo", і це говорить мені "Команда знищення не підтримується Angular-CLI"
Як ми правильно видаляємо компоненти за допомогою Angular CLI?
Відповіді:
destroy
або щось подібне може прийти до CLI, але це не є основним фокусом на даний момент. Тому вам потрібно буде це зробити вручну.
Видаліть каталог компонентів (припустимо, що ви не використовували --flat
), а потім видаліть його з того, NgModule
у якому він оголошений.
Якщо ви не впевнені, що робити, пропоную вам "чистий" додаток, який не означає поточних git
змін. Потім генеруйте компонент і подивіться, що зміниться в репо, щоб ви могли звідти відслідкувати, що вам потрібно буде зробити, щоб видалити компонент.
Якщо ви просто експериментуєте над тим, що ви хочете створити, ви можете використовувати --dry-run
прапор, щоб не створювати жодних файлів на диску, просто перегляньте оновлений список файлів.
Оскільки він ще не підтримується за допомогою кутового CLI
тож ось можливий спосіб, перед цим, будь ласка, спостерігайте, що відбувається при створенні компонента / послуги за допомогою CLI (наприклад ng g c demoComponent
).
demoComponent
( ng g c demoComponent
).HTML,CSS,ts
і spec
файл, присвячений demoComponent.тому робіть це у зворотному порядку
app.module.ts
при усуненні залежності потрібно зробити дві речі.
В даний час Angular CLI не підтримує можливість видалення компонента, це потрібно зробити вручну.
Я написав сценарій bash, який повинен автоматизувати процес, написаний Яковим Фаїном нижче. Це можна назвати як ./removeComponent myComponentName Це було протестовано лише з кутовим 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
Я не впевнений, чи це найкращий спосіб, але це працювало для мене.
Я просто зберегла та оновила додаток, і воно працювало.
Відповідь для Angular 2+
Видаліть компонент from imports and declaration array
app.modules.ts.
По-друге, перевірте, що його посилання додається в інший модуль, якщо так, то видаліть його та
нарешті delete that component Manually
з програми, і ви закінчили.
Або ви можете зробити це і в зворотному порядку.
З app.module.ts:
Потім видаліть папку компонента , який ви хочете видалити , і його Включаються файли ( .component.ts
, .component.html
, .component.css
і .component.spec.ts
).
Зроблено.
-
Я читаю людей, які говорять про її стерти з main.ts. Ви не повинні були імпортувати його звідти, в першу чергу, оскільки він вже імпортує AppModule, а AppModule імпортує всі створені вами компоненти.
Мені потрібно було видалити директиву Angular 6, специфікація якої була помилковою. Навіть після видалення образливих файлів, видалення всіх посилань на нього та відновлення програми, TS все ще повідомляв про ту саму помилку. Що для мене спрацювало - перезапуск Visual Studio - це очистило помилку та всі сліди старої небажаної директиви.
Якщо ви шукаєте якусь команду в CLI, то ans поки що НЕ . Але це можна зробити вручну, видаливши папку компонентів та всі посилання.
Це не підтримується Angular CLI, і вони не в змозі включити його незабаром.
Ось посилання на фактично створений випуск - https://github.com/angular/angular-cli/isissue/1776
git checkout src
).