답변:
--module 매개 변수를 사용하여 모듈을 지정하십시오. 예를 들어 기본 모듈이 app.module.ts 인 경우 다음을 실행하십시오.
ng g c new-component --module app
또는 다른 디렉토리에 있다면
ng g c component-name --module ../
이것을 시도하십시오 : 그것은 나를 위해 일하고 있습니다
ng generate component componentName --module=app.module
이는 생성시 컴포넌트를 모듈에 추가하려고했기 때문에 발생합니다 (예 :이 줄 추가).
import { MyComponent } from './Components/my-component/my-component.component';
그러나 2 개의 모듈을 찾았습니다.
여기 에 언급 된 것처럼 루트 src / app 폴더에 모듈이 하나만 있으면 괜찮으므로 보조 모듈을 하위 폴더로 옮기십시오.
그렇지 않으면 당신은 사용해야합니다 --module
modules
하위 폴더 로 옮겼습니다 .
그것은 나를 위해 일하고있다
ng g component component-name --skip-import
Zisha의 답변을 약간만 업데이트했습니다.
내 프로젝트에서 모든 모듈은 "modules"라는 폴더에 위치하고 모든 구성 요소는 "src / app"아래의 "components"폴더에 있습니다.
특정 경로에서 구성 요소를 만들려면 다음 구문을 사용했습니다.
ng gc components_path / component_name-모듈 모듈 _ 경로 / 모듈 _ 이름
예 :
ng gc components / login-모듈 모듈 / 앱
앵귤러 CLI : 6.0.8
노드 : 10.4.0
OS : Linux x64
앵귤러 : 6.0.4
라우팅 모듈이 별도의 NgModule (예 : manager-routing.module.ts ) 로 외부화 된 기능 모듈 (예 : "/ manager"하위 폴더 내에 manager.module.ts )이있는 경우 오류 메시지가 표시됩니다.
둘 이상의 모듈이 일치합니다. 구성 요소를 가장 가까운 모듈로 가져 오는 것을 건너 뛰려면 skip-import 옵션을 사용하십시오.
이 나타나지 않고 구성 요소가 제대로 생성되어 manager.module.ts 모듈에 추가됩니다 .
그러나 명명 규칙에 주의 하십시오! 라우팅 모듈의 이름은 " -routing "으로 끝나야합니다 !
라우팅 모듈에 예를 들어 manager-router.module.ts 와 같은 이름이 지정 되면 CLI는 오류 메시지를 표시하고 구성 요소 가져 오기를 자동으로 추가하기 위해 --module 옵션을 제공해야합니다.
ng generate component some-name --module=manager.module.ts
또는
ng generate component some-name --skip-import
구성 요소 가져 오기를 수동으로 추가하려는 경우
-
속임수를 썼는지! 나는 lib-name.routing.module.ts
대신에했다 lib-name-routing.module.ts
.
app 또는 lib에 여러 개의 중첩 모듈이있는 경우
myApp
> src
> app
app.module.ts
> routes
> login
> auth
login.module.ts
앵귤러 CLI
ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts
NRWL NX 앵귤러 CLI
ng g component routes/login/auth/my-auth --project=myApp --module=routes/login/login.module.ts
결과
myApp
> src
> app
app.module.ts
> routes
> login
> auth
> my-auth
my-auth.component.ts etc...
login.module.ts
앵귤러 CLI : 8.3.1
module.ts
모듈 내에 여러 파일 이있을 경우 구성 요소를 생성 할 모듈 파일을 지정해야합니다.
ng g c modulefolder/componentname --module=modulename.module
예를 위해 내가 모듈 폴더 내부를 공유 내가 가지고있는 shared.module.ts
과 material.module.ts
같은
shared
> shared.module.ts
> material.module.ts
sidebar
구성 요소 를 생성하고 shared.module.ts
다음 명령을 실행합니다.
ng g c shared/sidebar --module=shared.module
구성 요소를 내보내려면 다음 명령을 실행하십시오.
ng g c shared/sidebar --module=shared.module --export
앵귤러 CLI : 8.3.4 노드 : 10.16.3 앵귤러 : 4.2.5
내가 사용 "DOTNET 새로운 각도" 프로젝트를 생성하는 명령을, 그리고 함께 간단한 테스트 만 (응용 프로그램 폴더에있는 3 개 개의 모듈을 생성 한 새 프로젝트 이름을 겨 단지 하나의 모듈을 생성합니다.
프로젝트의 모듈을보고 원하는 모듈을 결정한 다음 이름을 지정하십시오.
ng g c componentName --module=[name-of-your-module]
https://angular.io/guide/architecture-modules에서 모듈에 대한 자세한 내용을 확인할 수 있습니다.
그냥 하나의 응용 프로그램이있는 저와 같은 누군가를 위해 이것에 다른 정보를 추가하십시오.
내 응용 프로그램을 기본 app.module.ts로 설정하고 기본 응용 프로그램 아래의 자체 폴더에 라우팅 모듈을 사용하여 라우팅했습니다. 나는 더 잘 정리해야 할 몇 가지 다른 것들이 있었기 때문에 몇 가지 정리 작업을 수행했습니다. 내가 한 일은 routing.module.ts를 루트 폴더로 옮기는 것이 었습니다. 파일이 폴더의 유일한 파일이기 때문에 자신의 폴더가 필요하지 않다고 생각했습니다.
이것은 처음에는 잘 작동했지만 다음에 WebStorm IDE를 통해 새 구성 요소를 생성하려고 할 때이 메시지로 실패했습니다. 이것을 읽은 후 라우팅 모듈을 별도의 폴더에 다시 넣으려고했는데 다시 작동했습니다.
따라서 다른 사람들에게 경고 할 수 있으므로 라우팅 모듈을 루트 폴더로 옮기지 마십시오! 나는 이것을 처리하는 다른 방법이 있다고 확신하지만, 지금은 자신의 폴더에 있고 이전과 같이 IDE 생성기를 사용하여 기쁘게 생각합니다.
해킹 단계 아래에서 나를 위해 일했습니다.
1) * .module.ts 파일을 src / app에서 프로젝트 외부 위치로 이동하십시오.
2) 컴포넌트 생성을위한 명령어 실행 [ng g c component-name]
3) * .module.ts 파일을 src / app /로 다시 이동하십시오.
ng g c admin/manageUsers ---module ../app