CLI를 사용하여 구성 요소를 삭제하는 가장 좋은 방법은 무엇입니까?
"ng destroy component foo"를 사용해봤는데 "destroy 명령어는 Angular-CLI에서 지원되지 않습니다."라는 메시지가 나타납니다.
Angular CLI를 사용하여 구성 요소를 올바르게 삭제하려면 어떻게 해야 합니까?
destroy
또는 이와 유사한 기능이 CLI에 제공될 수도 있지만 현재는 주요 초점이 아닙니다.따라서 수동으로 이 작업을 수행해야 합니다.
디렉토리를 ).--flat
)에서NgModule
그것이 선언된 곳에.
만약 당신이 무엇을 해야 할지 확실하지 않다면, 나는 당신이 현재가 없다는 것을 의미하는 "깨끗한" 앱을 가지고 있는 것을 제안합니다.git
구성 해야 할 할 수 .그런 다음 구성 요소를 생성하고 저장소에서 변경된 내용을 확인하여 구성 요소를 삭제하기 위해 수행해야 할 작업을 역추적할 수 있습니다.
갱신하다
만약하고 싶은 이라면, 생할항목대하경다사수있다습니용할음우을는을 할 수 .--dry-run
flag는 디스크에 파일을 생성하지 않습니다. 업데이트된 파일 목록을 참조하십시오.
- 이 구성 요소가 들어 있는 폴더를 삭제합니다.
- app.module.ts에서 이 구성 요소에 대한 가져오기 문을 제거하고 @NgModule의 선언 섹션에서 이름을 제거합니다.
- index.ts에서 이 구성 요소에 대한 내보내기 문이 있는 줄을 제거합니다.
아직 각도 CLI를 사용하여 지원되지 않기 때문에
가능한 방법은 다음과 같습니다. 그 전에 CLI를 사용하여 구성 요소/서비스를 생성할 때 어떤 일이 발생하는지 확인하십시오(예: ng g c demoComponent
).
- 은 이이지정별폴만다듭라는 이름의 .
demoComponent
(ng g c demoComponent
). - 은 니합다생을 합니다.
HTML,CSS,ts
a 리고a.spec
demoComponent 입니다. - 또한 app.module.ts 파일 내부에 종속성을 추가하여 해당 구성 요소를 프로젝트에 추가합니다.
그래서 역순으로 하세요.
- 에서
app.module.ts
- 해당 구성 요소 폴더를 삭제합니다.
종속성을 제거할 때는 두 가지를 수행해야 합니다.
- app.module.ts 파일에서 가져오기 라인 참조를 제거합니다.
- app.module.ts의 @NgModule 선언 배열에서 구성 요소 선언을 제거합니다.
Visual Studio Code를 사용하여 구성 요소 폴더를 삭제하고 Project Explorer(왼쪽)에서 빨간색으로 표시된 파일을 확인합니다. 이는 파일이 영향을 받고 오류가 발생했음을 의미합니다.각 파일을 열고 구성 요소를 사용하는 코드를 제거합니다.
현재 Angular CLI는 구성 요소를 제거하는 옵션을 지원하지 않으므로 수동으로 제거해야 합니다.
- app.module에서 모든 구성 요소에 대한 가져오기 참조 제거
- 구성 요소 폴더를 삭제합니다.
- 또한 app.module.ts 파일의 @NgModule 선언 배열에서 구성 요소 선언을 제거해야 합니다.
아래 야코프 파인이 작성한 프로세스를 자동화하는 bash 스크립트를 작성했습니다../removeComponent myComponentName과 같이 호출할 수 있습니다. 이는 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
이것은 Angular CLI에서 지원되지 않으며, 곧 포함시킬 기분이 아닙니다.
다음은 실제 생성된 이슈에 대한 링크입니다. - https://github.com/angular/angular-cli/issues/1776
그리고 관계자들이 보내온 해결책의 스크린샷.
그게 최선의 방법인지는 모르겠지만, 저에게는 효과가 있었습니다.
- 먼저 구성 요소 폴더를 삭제했습니다.
- 그런 다음 삭제할 구성 요소와 관련된 가져오기 및 선언을 app.module.ts, app.component.ts & app.component.html을 지웠습니다.
- 마찬가지로 main.ts도 지웠습니다.
방금 앱을 저장하고 새로 고쳤는데 작동했습니다.
app.module.ts에서:
- 특정 구성 요소에 대한 가져오기 라인 지우기;
- @NgModule에서 선언을 지웁니다.
및 합니다..component.ts
,.component.html
,.component.css
그리고..component.spec.ts
).
다 했어요.
-
저는 main.ts에서 지운다는 사람들의 말을 읽었습니다.AppModule은 이미 AppModule을 가져오기 때문에 애초에 거기서 가져오지 말았어야 했고, AppModule은 생성한 모든 구성 요소를 가져오는 것입니다.
Angular 2+에 대한 답
성구 제거소요from imports and declaration array
app.s.ts.s.s.s.s.s.s.s.s.s.s.s
두 번째로 참조가 다른 모듈에 추가되어 있는지 확인하고, 포함되어 있으면 해당 모듈을 탈거합니다.
마내침▁finally내delete that component Manually
앱에서 작업을 완료했습니다.
또는 역순으로 할 수도 있습니다.
스펙 파일이 잘못된 Angular 6 디렉티브를 삭제해야 했습니다.문제가 되는 파일을 삭제하고, 해당 파일에 대한 모든 참조를 제거하고 앱을 다시 구축한 후에도 TS는 여전히 동일한 오류를 보고했습니다.Visual Studio를 다시 시작하는 것이 효과적이었습니다. 그러면 오류가 제거되고 오래된 원치 않는 지시사항이 모두 사라졌습니다.
Angular 10 지금 사용하고 있습니다.수동으로 모든 파일과 참조를 삭제한 후 "ng serve"를 다시 실행하면 작동합니다.
먼저 삭제해야 하는 구성 요소 폴더를 제거한 다음 "ts" 파일에 작성한 항목을 제거합니다.
CLI에서 일부 명령을 찾는 경우 현재로서는 Tenans가 NO입니다.그러나 구성 요소 폴더와 모든 참조를 삭제하여 수동으로 수행할 수 있습니다.
언급URL : https://stackoverflow.com/questions/41354755/what-is-the-best-way-to-delete-a-component-with-cli
'programing' 카테고리의 다른 글
비트맵 개체에 이미지를 로드하는 동안 이상한 메모리 부족 문제가 발생했습니다. (0) | 2023.06.02 |
---|---|
Ruby에서 메서드를 매개 변수로 전달 (0) | 2023.06.02 |
AVP Player의 재생 상태 확인 (0) | 2023.06.02 |
Xcode - 다운로드할 수 있는 dSYM이 없습니다. (0) | 2023.06.02 |
루비에서 __FILE_은 무엇을 의미합니까? (0) | 2023.06.02 |