Modules
Contents 
Definition
Files where we define
- Components to be used by the module
- Services
- Other Modules to be imported
@NgModule
- [bootstrap] : []Define the root component
- [declarations] : []- components
- directives
- pipes
 
note
- NOTE: 
- A Component can only be declared in one module 
- To use a Component in two different Modules A and B, define a third Module C and export the component to A and B 
- [imports] : []Define sub modules to be imported into the current module
- [exports] : []Define components, directives, pipes to be exported to other Modules
- [providers] : []- Define @Injectableservices required by the module
- Any sub-modules will get the same instance of the service
- In case of AppModule, there services are application-scoped
 
- Define 
Example
Components
- Login
- Register
- Help
Group these under AuthenticationModule and Export
AuthenticationModule
    declarations : [Login, Register, Help],
    exports : [Login, Register, Help]
Import AuthenticationModule into AppModule
AppModule
    imports : [AuthenticationModule]
note
NOTE: Module is removed from imports when lazy-loading
Lazy Loading
Load only required modules based on current requirement
Example: User viewing the app may not require admin-module to be loaded
Read Routing Section