1. What is angular module?
NgModule helps to organize an application into organized
blocks of functionality. @NgModule decorator takes metadata that tells angular how
to compile and run the module code. A typical NgModule looks like.
Each application in angular 2 must have at least one
NgModule that you need to bootstrap to launch your application.
Components of
NgModule:
Declarations Array: this includes application’s components
only.
Imports Array: this includes modules.
Providers Array: this includes services.
Bootstrap Array: include components to bootstrap, generally one component used but you can provide multiple components as well if required.
2. Explain Routing in angular 2?
Router package is used for angular
2 routing. And this router comes with many features for routing based on paths
and loading specific components.
To define route we can create
routes constants in your modules like
const routes=[
{Path:'',component: HomeComponent},
{Path:'Contacts',component:ContactsComponent}
];
Then you have to import these
routes in NgModule.
@NgModule({
declarations: [
AppComponent,
HomeComponent,
ContactsComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule, RouterModule.forRoot(routes)
],
providers: [],
bootstrap: [AppComponent]
})
Also you have to use router-outlet
inside your component.
@Component({
selector: 'app-root',
template: '<nav>
<a routerLink=””>Home</a>
<a
routerLink=”contact”></a>
</nav>
<router-outlet></router-outlet>'
})
But this approach can be optimized
by putting out routes in separate file.
We can create separate app.route.ts file to define our route.
import { HomeComponent } from './app.component';
import { ContactsComponent } from './app.component';
import { RouterModule } from '@angular/router';
const routes=[
{Path:'',component: HomeComponent},
{Path:'Contacts',component:ContactsComponent}
];
export default RouterModule.forRoot(routes);
And then we does not need to
import RouterModule.forRoot(routes)
inside our module but we simply import this app.rotes that we have
created.
import appRoutes from './app.route';
@NgModule({
declarations: [
AppComponent,
ContactsComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
appRoutes
],
providers: [],
bootstrap: [AppComponent]
})
You can have separate route for
each component as below. This is called lazy loading of modules using angular 2
router.
a.
Create a separate home.route.ts
import { HomeComponent } from "app/home/home.component";
import { RouterModule } from "@angular/router";
const routes = [
{ path: '', component:HomeComponent}
];
export default RouterModule.forRoot(routes);
b.
Configure route into module.
import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { HomeComponent } from "app/home/home.component";
import { RouterModule } from "@angular/router";
import homeRoutes from 'app/home/home.routes';
@NgModule({
imports :[CommonModule, homeRoutes],
providers:[],
declarations:[HomeComponent]
})
export default class HomeModule{
}
c.
Configure individual routes to app.route.ts that
we have created earlier. See the difference on above app.route.ts and this.
import { HomeComponent } from './app.component';
import { ContactsComponent } from './app.component';
import { RouterModule } from '@angular/router';
import {CommonModule} from '@angular/common'
const routes=[
{Path:'',loadChildren: 'app/home/home.module'},
{Path:'Contacts',loadChildren:'app/contact/contact.module'}
];
export default RouterModule.forRoot(routes);
No comments:
Post a Comment
Please leave a comment for this post