Câu trả lời:
Chỉ định mô-đun bằng tham số --module. Ví dụ: nếu mô-đun chính là app.module.ts, hãy chạy này:
ng g c new-component --module app
Hoặc nếu bạn đang ở trong một thư mục khác thì
ng g c component-name --module ../
Hãy thử điều này: Nó đang làm việc cho tôi
ng generate component componentName --module=app.module
Điều này được gây ra do thế hệ đã cố gắng thêm thành phần của bạn vào một mô-đun, tức là thêm dòng này
import { MyComponent } from './Components/my-component/my-component.component';
nhưng nó tìm thấy 2 mô-đun.
Như đã nêu ở đây , họ đã sửa nó thành một tình huống miễn là trong thư mục gốc src / ứng dụng bạn chỉ có 1 mô-đun, bạn vẫn ổn, vì vậy chỉ cần di chuyển các mô-đun phụ sang thư mục con.
Nếu không bạn phải sử dụng --module
modules
thư mục con, và tất cả đều tốt.
Đó là làm việc cho tôi
ng g component component-name --skip-import
Chỉ cần một bản cập nhật nhỏ cho câu trả lời của Zisha.
Trong dự án của tôi, tất cả các mô-đun được đặt trong một thư mục gọi là "mô-đun" và tất cả các thành phần được đặt trong thư mục "thành phần" trong "src / app"
Vì vậy, để tạo một thành phần theo một đường dẫn cụ thể, tôi đã sử dụng cú pháp sau:
ng gc thành phần_path / thành phần tên - mô-đun mô-đun_path / mô-đun tên
thí dụ :
ng gc thành phần / đăng nhập - mô-đun mô-đun / ứng dụng
Angular CLI: 6.0.8
Nút: 10.4.0
Hệ điều hành: linux x64
Angular: 6.0.4
Trong trường hợp có một mô-đun tính năng (ví dụ manager.module.ts bên trong ví dụ: "/ quản lý" sub-folder) với các module định tuyến ra ngoài vào NgModule riêng biệt (ví dụ như quản lý-routing.module.ts ) thông báo lỗi:
Nhiều hơn một mô-đun phù hợp. Sử dụng tùy chọn bỏ qua để bỏ qua việc nhập thành phần vào mô-đun gần nhất.
không xuất hiện và thành phần được tạo và thêm đúng vào mô-đun manager.module.ts .
NHƯNG HÃY CẨN THẬN quy ước đặt tên! tên của mô-đun định tuyến phải chấm dứt bằng " -outout "!
Nếu mô-đun định tuyến được đặt tên như ví dụ: manager-router.module.ts , CLI sẽ khiếu nại với thông báo lỗi và mong bạn cung cấp tùy chọn --module để tự động thêm nhập thành phần:
ng generate component some-name --module=manager.module.ts
hoặc là
ng generate component some-name --skip-import
nếu bạn muốn thêm phần nhập thủ công
-
đã làm các mẹo! Tôi đã có lib-name.routing.module.ts
thay vì lib-name-routing.module.ts
.
Có hai cách để giải quyết vấn đề này.
1) Bỏ qua (sử dụng lệnh --skip-import) nhập mặc định và tạo thành phần và một khi thành phần được tạo, nhập thủ công bất cứ nơi nào bạn muốn sử dụng.
ng generate component my-component --skip-import
2) Cung cấp tên mô-đun rõ ràng nơi bạn muốn nhập
ng generate component my-component --module=my-module.module
Khi ứng dụng hoặc lib có nhiều mô đun lồng nhau
myApp
> src
> app
app.module.ts
> routes
> login
> auth
login.module.ts
CLI góc
ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts
NRWL NX góc cạnh
ng g component routes/login/auth/my-auth --project=myApp --module=routes/login/login.module.ts
Kết quả
myApp
> src
> app
app.module.ts
> routes
> login
> auth
> my-auth
my-auth.component.ts etc...
login.module.ts
Tôi đã nhận được lỗi dưới đây khi cố gắng tạo một thành phần mới trong một thư mục.
lỗi: Nhiều hơn một mô-đun khớp. Sử dụng tùy chọn bỏ qua để bỏ qua việc nhập thành phần vào mô-đun gần nhất.
Tôi đã sử dụng lệnh dưới đây và thành phần mới đã được tạo thành công trong một thư mục.
ng g c folderName/my_newComponent ---module ../app
Dự án của tôi đã được tạo bằng Visual Studio Community 2017 và nó tạo ra 3 mô-đun riêng biệt: app.browser.module, app.server.module và app. Shared.module
Để tạo các thành phần của mình, tôi đã kiểm tra các câu trả lời ở trên và tìm thấy mô-đun của mình là app. Shared.module.
Vì vậy, tôi chạy:
ng g c componentName --module=app.shared.module
Khi có nhiều hơn một mô-đun trong thư mục ứng dụng, việc tạo một thành phần với lệnh bên dưới sẽ thất bại:
ng generate component New-Component-Name
Lý do là CLI góc cạnh phát hiện nhiều mô-đun và không biết mô-đun nào để thêm thành phần. Vì vậy, bạn cần đề cập rõ ràng thành phần mô-đun nào sẽ được thêm vào:
ng generate component New-Component-Name --module=ModuleName
thử ng g thành phần tiêu đề - ứng dụng mô hình nó hoạt động với tôi
app.routing.module.ts
do đó xảy ra lỗi
Khi bạn có nhiều hơn một mô-đun, bạn cần chỉ định tên mô-đun
ng g c componentName --module=modulename.module
CLI góc: 8.3.1
Khi bạn có nhiều module.ts
tệp trong một mô-đun, bạn cần chỉ định tệp mô-đun nào bạn đang tạo thành phần.
ng g c modulefolder/componentname --module=modulename.module
ví dụ như tôi đã chia sẻ thư mục mô-đun bên trong mà tôi có shared.module.ts
và material.module.ts
thích cái này
shared
> shared.module.ts
> material.module.ts
và tôi muốn tạo sidebar
thành phần shared.module.ts
sau đó tôi sẽ chạy lệnh sau
ng g c shared/sidebar --module=shared.module
nếu bạn muốn xuất thành phần thì chạy lệnh sau
ng g c shared/sidebar --module=shared.module --export
CLI góc: 8.3.4 Nút: 10.16.3 Angualr: 4.2.5
Tôi đã sử dụng lệnh "dotnet new angular" để tạo dự án và nó đã tạo ra 3 mô-đun khác nhau trong thư mục ứng dụng (Mặc dù một thử nghiệm đơn giản với tên dự án mới chỉ tạo một mô-đun duy nhất.
xem các mô-đun trong dự án của bạn và quyết định mô-đun bạn muốn - sau đó chỉ định tên
ng g c componentName --module=[name-of-your-module]
Bạn có thể đọc thêm về các mô-đun tại đây: https://angular.io/guide/arch architecture -mô-đun
Trong trường hợp của tôi, có vẻ như ng không được đăng ký vào đường dẫn môi trường của tôi. Tôi đã sử dụng lệnh npm run để chạy các lệnh ng. Hãy lưu ý để vượt qua các đối số bạn cần thêm - theo thông số kỹ thuật chạy npm.
Ví dụ: npm chạy ng gc thành phần / lập lịch - --module = app
Hoặc: npm chạy ng gc thành phần / lập lịch - --skip-import
Tôi đã có cảnh báo này khi có angular.json
cấu hình này:
"prefix": "app_ng"
Khi thay đổi "app"
tất cả hoạt động hoàn toàn tốt.
Chỉ cần thêm một thông tin khác cho điều này cho bất kỳ ai như tôi, người chỉ xảy ra một ứng dụng duy nhất.
Tôi đã cài đặt ứng dụng của mình với app.module.ts chính và tôi đã định tuyến với mô đun định tuyến trong thư mục riêng của nó trong ứng dụng chính. Tôi đã trải qua và thực hiện một số 'dọn dẹp' vì tôi có một vài thứ khác cần được tổ chức tốt hơn. Một điều tôi đã làm là di chuyển định tuyến.module.ts vào thư mục gốc; vì nó là tập tin duy nhất trong thư mục mà tôi nghĩ rằng nó không cần thư mục riêng của nó.
Điều này hoạt động tốt lúc đầu nhưng lần sau tôi đã cố gắng tạo một thành phần mới (một thời gian sau, thông qua IDE WebStorm), nó đã thất bại với thông báo này. Sau khi đọc xong, tôi đã thử đặt mô-đun định tuyến trở lại vào một thư mục riêng và nó hoạt động trở lại.
Vì vậy, lưu ý cảnh báo cho người khác, đừng di chuyển mô-đun định tuyến vào thư mục gốc của bạn! Tôi chắc chắn cũng có nhiều cách khác để giải quyết vấn đề này nhưng tôi hài lòng với nó trong thư mục riêng của mình và sử dụng trình tạo IDE như trước đây.
Là một hack, dưới các bước, làm việc cho tôi.
1) Di chuyển các tệp * .module.ts từ src / app đến một vị trí ngoài dự án.
2) Thực thi lệnh để tạo thành phần [ng g c component-name]
3) Di chuyển trở lại các tệp * .module.ts vào src / app /
ng g c admin/manageUsers ---module ../app