Project - Routing

Set banner and featured view on home page

Edit the file src/app/app.component.ts

import Router and inject router in constructor as public like this constructor(public router: Router) {}

Like below:

import { Component } from '@angular/core';
import { Router } from '@angular/router';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  
  constructor(public router:Router){}
}
                                    

Edit the file src/app/app.component.html

Like below:

<app-header></app-header>
<app-banner *ngIf="router.url == '/'"></app-banner>
<app-course-featured *ngIf="router.url == '/'"></app-course-featured>
<router-outlet></router-outlet>
<app-footer></app-footer>
                                    

Root Routing Module

Edit the file src/app/app-routing.module.ts

route for the home page {path: '', redirectTo: '', pathMatch: 'full'}

Import component PageNotFoundComponent for set route of 404 error page (page not found), if page url not match.

route for 404 error page {path: '**', component: PageNotFoundComponent}

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import {PageNotFoundComponent} from './page-not-found/page-not-found.component';

const routes: Routes = [
{path:'',redirectTo:'',pathMatch:'full'},
{path:'**',component:PageNotFoundComponent}

];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
}
                                    

courses-routing.module.ts

Edit the file src/app/courses/courses-routing.module.ts

Import component CourseListComponent and CourseDetailComponent and set route for course listing and course detail page.

set id as parameter for getting single record.

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import {CourseListComponent} from './course-list/course-list.component';
import {CourseDetailComponent} from './course-detail/course-detail.component';


const routes: Routes = [
{path:'course',component:CourseListComponent},
{path:'course/:id',component:CourseDetailComponent}
  
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class CoursesRoutingModule { }
                                    

staticpages-routing.module.ts

Edit the file src/app/staticpages/ststicpages-routing.module.ts

Import component PageComponent and ContactUsComponent and set route for contact us page and other static pages Like : about us , service etc.

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import {PageComponent} from './page/page.component';
import {ContactUsComponent} from './contact-us/contact-us.component';

const routes: Routes = [
  {path:'page/:slug', component:PageComponent},
  {path:'contact',component:ContactUsComponent}
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class StaticpagesRoutingModule { }

                                    

Root app.module.ts

All modules ,which are used in project, should be imported in app.module.ts file. like : CoursesModule,StaticpagesModule

.....                                 
import{CoursesModule} from './courses/courses.module';
import{StaticpagesModule} from './staticpages/staticpages.module';
.....
                                    

All modules should be placed in imports array before AppRoutingModule

.....                                 
 imports: [
    BrowserModule,
    CoursesModule,
    StaticpagesModule,
    AdminModule,
    AuthModule,
    AppRoutingModule
  ],
.....
                                    

Header component:

set the routerLink and routerLinkActive in header component in meniu link

src/app/header/header.component.html

 
<nav class="navbar navbar-expand-md navbar-dark bg-blue">
  <div class="container">
    <a class="navbar-brand" href="index.html">
      <img src="assets/images/logo.png" alt="Angular Project" />
    </a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarCollapse">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
          <a routerLink="/" routerLinkActive="active" class="nav-link">Home</a>
        </li>
        <li class="nav-item">
          <a routerLink="/course" routerLinkActive="active" class="nav-link">Courses</a>
        </li>
        <li class="nav-item">
          <a routerLink="/page/About" routerLinkActive="active" class="nav-link">About Us</a>
        </li>
        <li class="nav-item">
          <a routerLink="/contact" routerLinkActive="active" class="nav-link">Contact Us</a>
        </li>
      </ul>
      <ul class="navbar-nav ml-auto">
        <li class="nav-item">
          <a class="nav-link" href="#">Login</a>
        </li>
    </ul>

    </div>
  </div>
</nav>