CLI를 사용하여 구성 요소를 삭제하는 가장 좋은 방법은 무엇입니까


227

"ng destroy component foo"를 사용하려고했는데 "angular-CLI에서 destroy 명령이 지원되지 않습니다"라고 알려줍니다.

Angular CLI를 사용하여 구성 요소를 올바르게 삭제하는 방법


2
아직 CLI에서는 지원되지 않지만 구성 요소를 만들기 전에 이전 변경 내용이 git commit되었는지 확인한 경우 새 파일을 제거하고 변경된 파일에서 git checkout을 수행 할 수 있습니다 (또는 그냥 git checkout src).
산 제이 베르

영리한 해킹입니다. 각 팀은 조만간이 문제를 해결해야합니다. 나는 그들이 다른 문제로 바쁘다고 생각합니다. 그러나 나는 우리가 당신의 솔루션과 함께 살아야한다고 생각합니다. 이것을 답변으로 게시하십시오. @ SanjayVerma
Aman

답변:


167

destroy또는 CLI에 비슷한 것이있을 수 있지만 현재로서는 주요 초점이 아닙니다. 따라서 수동으로 수행해야합니다.

구성 요소 디렉토리를 삭제하고 (사용하지 않았다고 가정 --flat) NgModule선언 된 위치에서 제거하십시오 .

무엇을해야할지 잘 모르겠다면 현재 git변경 사항이 없는 "깨끗한"앱을 사용하는 것이 좋습니다 . 그런 다음 구성 요소를 생성하고 리포지토리에서 변경된 내용을 확인하여 구성 요소를 삭제하는 데 필요한 작업을 역 추적 할 수 있습니다.

최신 정보

생성하려는 항목에 대해서만 실험하는 경우 --dry-run플래그를 사용하여 디스크에 파일을 생성하지 않고 업데이트 된 파일 목록을 볼 수 있습니다.


132
  1. 이 구성 요소가 포함 된 폴더를 삭제하십시오.
  2. app.module.ts에서이 컴포넌트의 import 문을 제거하고 @NgModule의 선언 섹션에서 이름을 제거하십시오.
  3. index.ts에서이 구성 요소에 대한 내보내기 명령문이있는 행을 제거하십시오.

12
index.ts는 어디에 있습니까? 감사합니다
Shane G

40
최신 버전의 CLI에서는 생성하지 않습니다.
Yakov Fain

7
한 단계 더 빠진 것 같아요. ng serve 다시 실행 하시겠습니까?
gsalgadotoledo 1

index.ts? 5
시가

2
Angular6에서 app-routing.module.ts에서 import 문을 제거해야합니다
tyro

26

각도 CLI를 사용하여 아직 지원되지 않기 때문에

CLI를 사용하여 구성 요소 / 서비스를 만들 때 어떤 일이 발생하는지 관찰하십시오 (예 :) ng g c demoComponent.

  1. demoComponent( ng g c demoComponent) 라는 별도의 폴더를 만듭니다 .
  2. 그것은 생성 HTML,CSS,ts하고 spec파일 demoComponent에 전념.
  3. 또한 app.module.ts 파일에 종속성을 추가하여 해당 구성 요소를 프로젝트에 추가합니다.

그래서 역순으로

  1. 에서 종속성 제거 app.module.ts
  2. 해당 구성 요소 폴더를 삭제하십시오.

종속성을 제거 할 때는 두 가지 작업을 수행해야합니다.

  1. app.module.ts 파일에서 가져 오기 라인 참조를 제거하십시오.
  2. app.module.ts의 @NgModule 선언 배열에서 컴포넌트 선언을 제거하십시오.

11

Visual Studio Code를 사용하여 컴포넌트 폴더를 삭제하고 프로젝트 탐색기 (왼쪽)에서 빨간색으로 표시된 파일을 확인하십시오. 즉, 파일이 영향을 받고 오류가 발생했음을 의미합니다. 각 파일을 열고 구성 요소를 사용하는 코드를 제거하십시오.


11

현재 Angular CLI는 구성 요소를 제거하는 옵션을 지원하지 않으므로 수동으로 수행해야합니다.

  1. app.module에서 모든 구성 요소에 대한 가져 오기 참조 제거
  2. 구성 요소 폴더를 삭제하십시오.
  3. 또한 app.module.ts 파일의 @NgModule 선언 배열에서 구성 요소 선언을 제거해야합니다.

5

아래의 Yakov Fain이 작성한 프로세스를 자동화 해야하는 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

향후 각도 클리닉이 변경 될 경우이를 변경할 수 있도록 메모를 추가하십시오
Aidan Grimshaw

3

그것이 최선의 방법인지 확실하지 않지만 그것은 나를 위해 일했습니다.

  • 먼저 구성 요소 폴더를 삭제했습니다.
  • 그런 다음 app.module.ts, app.component.ts & app.component.html에서 삭제하려는 구성 요소와 관련된 가져 오기 및 선언을 지 웠습니다.
  • 마찬가지로 main.ts를 지 웠습니다.

방금 앱을 저장하고 새로 고쳤으며 작동했습니다.


3

Angular 2 이상에 대한 답변

from imports and declaration arrayapp.modules.ts의 구성 요소 를 제거하십시오 .

두 번째로 참조가 다른 모듈에 추가되었는지 확인하십시오.

마침내 delete that component Manually앱에서 당신은 끝났습니다.

또는 역순으로 할 수도 있습니다.


2

app.module.ts에서 :

  • 특정 구성 요소에 대한 가져 오기 라인을 지우십시오.
  • @NgModule에서 선언을 지우십시오.

그런 다음 삭제와 포함 된 파일 할 구성 요소의 폴더를 삭제 ( .component.ts, .component.html, .component.css.component.spec.ts).

끝난.

-

main.ts에서 지우는 것에 대해 말하는 사람들을 읽었습니다. AppModule을 이미 가져 오기 때문에 처음부터 가져 오지 않아야했으며 AppModule은 사용자가 만든 모든 구성 요소를 가져 오는 것입니다.


2

사양 파일이 잘못된 Angular 6 지시문을 삭제해야했습니다. 문제가되는 파일을 삭제하고 해당 파일에 대한 모든 참조를 제거하고 앱을 다시 빌드 한 후에도 TS는 여전히 동일한 오류를보고했습니다. 나를 위해 일한 것은 Visual Studio를 다시 시작하는 것이 었습니다. 이로 인해 오류와 이전 원하지 않는 지시문의 모든 흔적이 지워졌습니다.


0

우선, "ts"파일에서 작성한 항목을 삭제 한 다음 구성 요소 폴더를 제거하십시오.


0

CLI에서 일부 명령을 찾고 있다면 지금 은 ans가 NO 입니다. 그러나 구성 요소 폴더 와 모든 참조 를 삭제하여 수동으로 수행 할 수 있습니다 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.