Angular-CLI ile belirli modüle bileşen oluşturma


171

Açısal klibi kullanmaya başladım ve ne yapmak istediğime dair bir cevap bulmak için çok şey okudum ... başarı yok, bu yüzden buraya geldim.

Yeni bir modüle bileşen oluşturmanın bir yolu var mı?

Örneğin: ng g module newModule

ng g component newComponent (bu bileşen newModule'a nasıl eklenir ??)

çünkü açısal cli varsayılan davranışı tüm yeni bileşenleri içine koymaktır app.module. Ayrılmış modüller oluşturabilmem ve tüm bileşenlerimin içinde olmamasını sağlamak için bileşenimin nerede olacağını seçmek istiyorum app.module. Açısal klibi kullanarak bunu yapmak mümkün mü yoksa bunu manuel olarak yapmak zorunda mıyım?

Yanıtlar:


217

Bir modülün parçası olarak bir bileşen oluşturmak için

  1. ng g module newModule bir modül üretmek,
  2. cd newModuledizini newModuleklasöre değiştirmek için
  3. ng g component newComponent modülün alt öğesi olarak bir bileşen oluşturmak için.

GÜNCELLEME: Açısal 9

Bileşeni oluştururken hangi klasörde olduğunuz önemli değil.

  1. ng g module NewMoudle bir modül oluşturmak.
  2. ng g component new-module/new-component NewComponent oluşturmak için.

Not: Açısal CLI yeni modül / yeni bileşen gördüğünde, durumu yeni modül -> NewModule ve yeni bileşen -> NewComponent ile eşleşecek şekilde anlar ve çevirir. Başlangıçta kafa karıştırıcı olabilir, bu yüzden kolay yol # 2'deki adları modül ve bileşen için klasör adlarıyla eşleştirmektir.


92
Ayrıca proje kökünde kalabilir ve bileşenin önüne modül adını ekleyebilirsiniz ng g component moduleName/componentName.
JayChase

3
Açısal CLI sürüm 1.6.8 ile, varolan bir modülü ayırdığımda her zaman 'belirtilen modül mevcut değil' hatası sying alıyordum. Aşağıdaki komutu denediğimde çalıştı: ng create service service1 --module = module1 / module1.module.ts . Not: Benim hizmetin adıdır servis1 ve benim modül adıdır module1
Diallo

8
Bu, belirtilen dizinde yeni bir bileşen oluşturur, ancak bunu modüle kaydetmez. Bunu app.module'a kaydeder. modülü aşağıdaki --modulegibi bir seçenekle belirtmeniz gerekir :ng g component <your component> --module=<your module name>
Vinit Sarvade

3
6 Ekim itibariyle güncel, Açısal 6
tom87416

4
Demode. Açısal 6, bileşenin hangi modülde olduğunu görmek için klasör yapılarına bağlı değildir. İki modül aynı dizinde olabilir. @
daniel'in

145
ng g component nameComponent --module=app.module.ts

10
diğer cevaplar işe yarıyor, ama bu en etkili olanı. --dry-runSadece neyin etkileneceğini görmek için bunun sonuna eklemeye değer , güzel bir akıl kontrolü
tony09uk

ng g component path/to/myComponent --module=app.module.ts --dry-runçok kullanışlı bir komuttur; bileşeninizin doğru dizinde oluşturulduğundan emin olmak için.
theman0123

74

Alexander Ciesielski'nin cevabının yazma sırasında doğru olup olmadığından emin değilim, ancak bunun artık işe yaramadığını doğrulayabilirim. Açısal CLI'yı projede hangi dizinde çalıştırdığınız önemli değildir. Yazarsanız

ng g component newComponent

bir bileşen oluşturur ve bunu app.module.ts dosyasına alır

CLI'yi otomatik olarak başka bir modüle almak için kullanabileceğiniz tek yol,

ng g component moduleName/newComponent

Burada moduleName, projenizde önceden tanımladığınız bir modüldür. ModuleName yoksa, bileşeni moduleName / newComponent dizinine koyar, ancak yine de app.module dosyasına alır.


2
o zaman benim için doğru cevaptı .. düzgün çalışıyor. Bu bilgileri dokümanlara eklemek için bir çekme isteği oluşturuyorum. Katkıda bulunanlardan biri cd-ing bölümünü kaldırmamı istiyor ... sonunda 1 olacak. ng g module newModule 2. ng g component new-module/newComponentOna göre newModule yerine yeni modül olmalı
Elmer Dantas

Sadece belirtmek gerekirse, Alexander Ciesielski'nin tekniğini kullanarak ve beklendiği gibi çalışıyor. Dikkat etmeliyim ki, klasör oluşturmak için gerekli olan bileşeni oluşturmam gerekmiyordu. Ben sadece mkdirbir klasör ve sonra yeni oluşturulan klasörün içindeki bileşen newComponent ranng.
Charlie-Greenman

2
Ben tam cevap olduğunu söyleyebilirimng g component moduleName/newComponent -m moduleName
slavugan

Benim durumumda bileşen adı modül adıyla aynıdır, bu yüzden modülü ng generate module {modComName}1 ile oluşturdum. 1) Klasörü oluşturdu 2) Aynı addaki klasörün içinde bir modül dosyası oluşturdu; komut ng generate component {modComName}aslında 1) Aynı addaki klasörün içinde bir bileşen dosyası oluşturdu 2) Bileşeni içe aktarmak için modülü değiştirdi
Red Pea

Bir modül oluşturup bir temel modüle içe aktarırken dikkatli olun; dizinin sonunang içe aktarımlar ekler ; ancak isteyebilirsiniz: "Yapılandırmadaki rotaların sırası önemlidir ve bu tasarım gereğidir."
Kırmızı Bezelye

37

Ben üst düzey modül klasörü içinde bir bileşen oluşturmak için cli nasıl kullanılacağını gösteren bir yanıt bulamadık ve ayrıca bileşen otomatik olarak modülün bildirim koleksiyonu ekledi var.

Modülü oluşturmak için şunu çalıştırın:

ng g module foo

Bileşeni foo module klasörünün içinde oluşturmak ve foo.module.ts'in bildirim koleksiyonuna eklemek için şunu çalıştırın:

ng g component foo/fooList --module=foo.module.ts

Ve klips, modülü ve bileşeni şu şekilde dışarı çıkaracak:

resim açıklamasını buraya girin

- Köşeli klibin yeni versiyonu farklı davranır. 1.5.5 bir modül dosyası adı istemiyor, bu nedenle v1.5.5 ile komut

ng g component foo/fooList --module=foo

1
--moduleArgüman için Yay ; docs "ilan modülünün tanımlanmasına izin verir." demek ; Ben eklersiniz --modulebelirliyorsa mevcut modülü olmalıdır modifiye sen modülü almak için oluşturacağınız hakkında
Kırmızı Bezelye

2
@TheRedPea "--modül, mevcut bileşeni almak için hangi modülün değiştirilmesi gerektiğini belirtir ..." demek istediğinizi düşünüyorum
cobolstinks

Evet haklısın! Mevcut bileşen
The Red Pea

13

Aşağıdaki komutu,

ng -> Angular 
g  -> Generate
c  -> Component
-m -> Module 

Sonra komutunuz şöyle olacaktır:

ng g c user/userComponent -m user.module

9

Açısal v4 ve Üstü için şunları kullanın:

ng g c componentName -m ModuleName

1
Specified module does not existModül varken bir hata
atar

1
Modülün adını belirtmezsiniz, modülün dosya adını belirtirsiniz.
Roger

1
Cazibe gibi çalışır! örneğin, modül dosyanız user-settings.module.tsve bir bileşen eklemek istiyorsanız public-info, komut şu şekilde olacaktır:ng g c PublicInfo -m user-settings
Spiral Out

1
Bu en basit ve en temiz cevap!
Barna Tekse

8

benim için işe yarayan buydu:

1 -->  ng g module new-module

2 -->  ng g c new-module/component-test --module=new-module/new-module.module.ts

Dizini olmadan bir bileşen oluşturmak istiyorsanız --flat flag kullanın .


.ts yazmak zorunda değilsiniz
Lapenkov Vladimir

--module = yol-modül formu me sayesinde @Mohamed Makkaoui çalıştı
Ian Poston Framer

8
  1. İlk olarak, çalıştırarak bir modül oluşturursunuz.
ng g m modules/media

bu klasör mediaiçinde bir modül oluşturur modules.

  1. İkinci olarak, bu modüle eklenen bir bileşen oluşturursunuz
ng g c modules/media/picPick --module=modules/media/media.module.ts

komutunun ilk bölümü ng g c modules/media/picPickadında bir bileşen klasörü oluşturacaktır picPickiçine modules/mediayeni içerirler cadı klasöre mediamodülü.

ikinci bölüm ise modülde picPickbildirilen yeni bileşenimizi mediamodül dosyasına alarak declarationsve bu modülün dizisine ekleyerek yapar .

çalışma ağacı

resim açıklamasını buraya girin


2
Bunun soruyu nasıl cevapladığı hakkında daha fazla bilgi verebilir misiniz?
Sterling Archer

Ben gelecekteki bir okuyucu @CertainPerformance olduğum gibi not için teşekkür ederiz, benim cevap düzenlenebilir
Elhakim

3

Modül seviyesine gidin / kök seviyesinde olabiliriz ve aşağıdaki komutları yazabiliriz

ng g component "path to your component"/NEW_COMPONENT_NAME -m "MODULE_NAME"

Misal :

ng g component common/signup/payment-processing/OnlinePayment -m pre-login.module

3

İlk oluşturma modülü:

ng g m moduleName --routing

Bu, bir moduleName klasörü oluşturur ve ardından modül klasörüne git

cd moduleName

Ve bundan sonra bileşen üretin:

ng g c componentName --module=moduleName.module.ts --flat

Modül klasörü içinde alt klasör oluşturmamak için --flat komutunu kullanın


1

Uygulamada çoklu modüller ile benzer sorunları yaşıyorum. Bir bileşen herhangi bir modüle oluşturulabilir, bu nedenle bir bileşen oluşturmadan önce belirli modülün adını belirtmeliyiz.

'ng generate component newCompName --module= specify name of module'

1

Bu basit komutu kullanın:

ng g c users/userlist

users: Modül adınız.

userlist: Bileşen adınız.


1

Açısal belgelere göre, belirli bir modül için bileşen oluşturmanın yolu,

ng g component <directory name>/<component name>

"dizin adı" = CLI'nin özellik modülünü oluşturduğu yer

Misal :-

ng generate component customer-dashboard/CustomerDashboard

Bu, müşteri gösterge tablosu klasöründe yeni bileşen için bir klasör oluşturur ve özellik modülünü CustomerDashboardComponent ile günceller


1

İlk çalıştırma ng g module newModule . O zaman koşng g component newModule/newModule --flat


1

Belirli Kök Klasöre sahip bileşen tabanlı alt modül oluşturdum

Aşağıdaki cli komutunu belirttim, lütfen kontrol et

ng g c Repair/RepairHome -m Repair/repair.module

Onarım alt modülümüzün Kök Klasörüdür

-m --modül

hesaplamak için c

oluşturmak için g


1

Bugün bir Angular 9 uygulaması iskelesi yaparken bu sorunla karşılaştım. .module.tsVeya .modulemodül adını her eklediğimde "modül yok hatası" var . Klibi sadece uzantısı olmayan modülün adına ihtiyaç duyar. Bir modül adım olduğunu varsayarsak: brands.module.tskullandığım komut

ng g c path/to/my/components/brands-component -m brands --dry-run

--dry-rundosya yapısının doğru olduğunu onayladıktan sonra kaldırın .


1
ng g c componentName --module=path-to-your-module-from-src-folder

misal:

ng g c testComponent --module=/src/app/home/test-component/test-component.module

1

Ortak bir desen, rota, tembel yüklü bir modül ve bir bileşen ile bir özellik oluşturmaktır.

Rota: myapp.com/feature

app-routing.module.ts

{ path: 'feature', loadChildren: () => import('./my-feature/my-feature.module').then(m => m.MyFeatureModule) },

Dosya yapısı:

app   
└───my-feature
      my-feature-routing.module.ts
      my-feature.component.html
      my-feature.component.css
      my-feature.component.spec.ts
      my-feature.component.ts
      my-feature.module.ts

Tüm bunlar klipten şu şekilde yapılabilir:

ng generate module my-feature --module app.module --route feature

Veya daha kısa

ng g m my-feature --module app.module --route feature

Ya da adı terk ederseniz, klip sizden bunu isteyecektir. Birkaç özellik oluşturmanız gerektiğinde çok kullanışlıdır

ng g m --module app.module --route feature

0

Açısal CLI kullanarak Açısal 4 uygulamasına bir bileşen ekleme

Uygulamaya yeni bir Açısal 4 bileşeni eklemek için command komutunu kullanın ng g component componentName. Bu komutun yürütülmesinden sonra, Angular CLI component-namealtına bir klasör ekler src\app. Ayrıca, aynı referanslar src\app\app.module.tsotomatik olarak dosyaya eklenir.

Bir bileşenin bir @Componentdekoratör işlevi ve ardından düzenlenmesi gereken bir işlevi classolmalıdır export. @ComponentDekoratör fonksiyonu meta veri kabul eder.

Açısal CLI kullanarak Açısal 4 uygulamasının belirli bir klasörüne bileşen ekleme

Belirli bir klasöre yeni bir bileşen eklemek için şu komutu kullanın: ng g component folderName/componentName


0

.Angular-cli.json içinde bildirilmiş birden fazla uygulamanız varsa (örneğin, özellik modülünde çalışma durumunda)

"apps": [{
    "name": "app-name",
    "root": "lib",
    "appRoot": ""
}, {...} ]

Yapabilirsin :

ng g c my-comp -a app-name

-a --app (isim) anlamına gelir


0

Bir modül içinde bileşenler oluşturmak için bu özel komutu kullanın.

ng g c <module-directory-name>/<component-name>

Bu komut, modül için yerel bileşen oluşturur. veya Önce dizini yazarak değiştirebilirsiniz.

cd <module-directory-name>

ve sonra bileşen oluşturun.

ng g c <component-name>

Not: <> içindeki kod kullanıcıya özel adları temsil eder.


0

1. - Özellik modülünüzü her zamanki gibi oluşturun.

ng generate module dirlevel1/module-name

2. - Projenizin KÖK YOLUNU --modül içinde belirtebilirsiniz (sadece --modül, (/) PROJE KÖK'ünüzün kök noktalarındadır ve SİSTEM KÖKÜ DEĞİLDİR !!! )

ng generate component dirlevel1/component-name --module /src/app/dirlevel1/module-name.module.ts

Gerçek Örnek:

ng generate module stripe/payment-methods-list
ng generate component stripe/payment-methods-list --module=/src/app/stripe/payment-methods-list/payment-methods-list.module.ts 

Çıktı:

CREATE src/app/stripe/payment-methods-list/payment-methods-list.component.scss (0 bytes)
CREATE src/app/stripe/payment-methods-list/payment-methods-list.component.html (39 bytes)
CREATE src/app/stripe/payment-methods-list/payment-methods-list.component.spec.ts (768 bytes)
CREATE src/app/stripe/payment-methods-list/payment-methods-list.component.ts (322 bytes)
UPDATE src/app/stripe/payment-methods-list/payment-methods-list.module.ts (311 bytes)
[OK] Generated component!

Açısal CLI ile test edilmiştir: 9.1.4


0

Belirli bir modülde modül, servis ve bileşen oluşturma

Basic:

    ng g module chat     
    ng g service chat/chat -m chat
    ng g component chat/chat-dialog -m chat

    In chat.module.ts:
        exports: [ChatDialogComponent],
        providers: [ChatService]

    In app.module.ts:

        imports: [
            BrowserModule,
            ChatModule
        ]

    Now in app.component.html:
        <chat-dialog></chat-dialog>


LAZY LOADING:
    ng g module pages --module app.module --route pages

        CREATE src/app/pages/pages-routing.module.ts (340 bytes)
        CREATE src/app/pages/pages.module.ts (342 bytes)
        CREATE src/app/pages/pages.component.css (0 bytes)
        CREATE src/app/pages/pages.component.html (20 bytes)
        CREATE src/app/pages/pages.component.spec.ts (621 bytes)
        CREATE src/app/pages/pages.component.ts (271 bytes)
        UPDATE src/app/app-routing.module.ts (8611 bytes)       

    ng g module pages/forms --module pages/pages.module --route forms

        CREATE src/app/forms/forms-routing.module.ts (340 bytes)
        CREATE src/app/forms/forms.module.ts (342 bytes)
        CREATE src/app/forms/forms.component.css (0 bytes)
        CREATE src/app/forms/forms.component.html (20 bytes)
        CREATE src/app/forms/forms.component.spec.ts (621 bytes)
        CREATE src/app/forms/forms.component.ts (271 bytes)
        UPDATE src/app/pages/pages-routing.module.ts (437 bytes)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.