angular - Sprístupnenie komponentov vnoreným modulom
Takže teraz mám nastavenie, ktoré vyzerá takto:
Modul aplikácie
Veľký modul
Ďalší veľký modul
- Komponent
- Ďalší veľký modul
- Komponent
- Veľký modul
- Ďalší veľký modul
- Komponent
Komponent NEMÁ prístup ku komponentom načítaným v Veľkom Module, aj keď sú tieto komponenty definované ako deklarácie a exporty Veľkého Modulu.
Existuje nejaký spôsob, ako môžem dať vnorenému modulu Another Large Module prístup k importom komponentov z A Large Module, aby jeho detské komponenty mali k týmto komponentom prístup? Alebo je potrebné, aby boli tieto deklarované priamo v Another Large Module, aby jeho detské komponenty k nim mali prístup?
Odpoveď č. 1
Musíte importovať veci do modulu, ak komponenty v ňom deklarované používajú tie veci. Môžete vytvoriť funkčný modul, ktorý importuje/exportuje/deklaruje súbor komponentov a používať ho vo vašich ostatných moduloch.
- 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]
Ak sú vaše Large Module a Another Large Module načítané len na vyžiadanie, budete mať FeatureA module v oboch súboroch/balíkoch, ale pár extra kilobajtov neublíži. Ďalšou výhodou je znovupoužiteľnosť, môžete použiť modul funkcií aj v iných projektoch:
- 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]
Odpoveď č. 2
Ak chcete zdieľať komponenty medzi modulmi, najjednoduchší spôsob je vytvoriť shared.module.ts :
const SHARED_COMPONENTS = [];
const SHARED_MODULES = [];
@NgModule({
declarations: [
...SHARED_COMPONENTS
],
imports: [
...SHARED_MODULES
],
exports: [
...SHARED_COMPONENTS,
...SHARED_MODULES
]
})
export class SharedModule { }
všimnite si kľúč 'exports', umožňuje vám naimportovať váš SharedModule kdekoľvek ho potrebujete vo vašej hierarchii a používať zdieľané komponenty odkiaľkoľvek.
