angular - Membuat Komponen Tersedia untuk Modul Bersarang


Jadi saat ini saya memiliki pengaturan yang terlihat seperti ini:

  • Modul Aplikasi

    • Sebuah Modul Besar

      • Modul Besar Lainnya

        • Sebuah Komponen
        • Modul Besar Lainnya
        • Sebuah Komponen

        • Sebuah Modul Besar
        • Modul Besar Lainnya
        • Sebuah Komponen

Sebuah Komponen TIDAK memiliki akses ke komponen yang dimuat di Sebuah Modul Besar, meskipun komponen-komponen tersebut didefinisikan sebagai deklarasi dan ekspor dari Sebuah Modul Besar.

Apakah ada cara bagi saya untuk memberikan modul bersarang Another Large Module akses ke impor komponen dari A Large Module sehingga komponen anaknya akan memiliki akses ke komponen-komponen tersebut? Ataukah ini perlu dideklarasikan di dalam Another Large Module agar komponen anaknya memiliki akses ke komponen-komponen tersebut?

Jawaban #1

Anda perlu mengimpor hal-hal dalam modul jika komponen yang dideklarasikan di dalamnya menggunakan hal-hal tersebut. Anda dapat membuat modul fitur yang mengimpor/mengekspor/mendeklarasikan sekumpulan komponen dan menggunakannya di modul lain Anda.

- App Module
   - FeatureA Module
   - FeatureB Module
   - Large Module (import FeatureA Module)
       - Component [can use components from FeatureA; 
                    can't use components from FeatureB]
       - Another Large Module (import FeatureA Module, FeatureB Module)
           - Component [can use components from FeatureA and FeatureB]

Jika Large Module dan Another Large Module Anda dimuat secara malas, Anda akan memiliki FeatureA module di kedua file/paket, tetapi beberapa kilobyte tambahan tidak akan berpengaruh. Satu manfaat tambahan adalah keterulangan, Anda dapat menggunakan modul fitur di proyek lain:

- Different App Module
   - FeatureA Module
   - FeatureB Module
   - Different Large Module (import FeatureA Module)
       - Component [can use components from FeatureA; 
                    can't use components from FeatureB]

Jawaban #2

Jika Anda ingin membagikan komponen antara modul, cara termudah adalah membuat shared.module.ts :

const SHARED_COMPONENTS = [];

const SHARED_MODULES = [];

@NgModule({
  declarations: [
    ...SHARED_COMPONENTS
  ],
  imports: [
    ...SHARED_MODULES
  ],
  exports: [
    ...SHARED_COMPONENTS,
    ...SHARED_MODULES
  ]
})
export class SharedModule { }

perhatikan kunci 'exports' ini memungkinkan Anda untuk mengimpor SharedModule Anda di mana pun Anda membutuhkannya dalam hierarki Anda dan menggunakan komponen bersama dari mana saja.