Angular7 - Routing
Routing significa fondamentalmente navigare tra le pagine. Hai visto molti siti con link che ti indirizzano a una nuova pagina. Ciò può essere ottenuto utilizzando il routing. Qui le pagine a cui ci riferiamo saranno sotto forma di componenti. Abbiamo già visto come creare un componente. Creiamo ora un componente e vediamo come utilizzarlo con il routing.
Durante la configurazione del progetto, abbiamo già incluso il modulo di routing e lo stesso è disponibile in app.module.ts come mostrato di seguito -
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { NewCmpComponent } from './new-cmp/new-cmp.component';
import { ChangeTextDirective } from './change-text.directive';
import { SqrtPipe } from './app.sqrt';
@NgModule({
declarations: [
SqrtPipe,
AppComponent,
NewCmpComponent,
ChangeTextDirective
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
AppRoutingModule viene aggiunto come mostrato sopra e incluso nell'array delle importazioni.
Dettagli del file di app-routing.module sono riportati di seguito -
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [];
@NgModule({
imports: [
RouterModule.forRoot(routes)
],
exports: [RouterModule]
})
export class AppRoutingModule { }
Qui, dobbiamo notare che questo file viene generato per impostazione predefinita quando il routing viene aggiunto durante la configurazione del progetto. Se non vengono aggiunti, i file di cui sopra devono essere aggiunti manualmente.
Quindi, nel file sopra, abbiamo importato Route e RouterModule da @ angular / router.
C'è una const routesdefinito che è di tipo Percorsi. È un array che contiene tutti i percorsi di cui abbiamo bisogno nel nostro progetto.
Le route const vengono fornite al RouterModule come mostrato in @NgModule. Per mostrare i dettagli di instradamento all'utente, dobbiamo aggiungere la direttiva <router-outlet> dove vogliamo che venga visualizzata la vista.
Lo stesso viene aggiunto in app.component.html come mostrato di seguito
<h1>Angular 7 Routing Demo</h1>
<router-outlet></router-outlet>
Ora creiamo 2 componenti chiamati come Home e Contact Us e navigare tra di loro utilizzando il routing.
Component Home
Innanzitutto, discuteremo di Home. Di seguito è riportata la sintassi per Component Home:
ng g component home
C:\projectA7\angular7-app>ng g component home CREATE
src/app/home/home.component.html (23 bytes) CREATE
src/app/home/home.component.spec.ts (614 bytes) CREATE
src/app/home/home.component.ts (261 bytes) CREATE
src/app/home/home.component.css (0 bytes) UPDATE
src/app/app.module.ts (692 bytes)
Componente Contattaci
Di seguito è riportata la sintassi per Componente Contattaci -
ng g component contactus
C:\projectA7\angular7-app>ng g component contactus
CREATE src/app/contactus/contactus.component.html (28 bytes)
CREATE src/app/contactus/contactus.component.spec.ts (649 bytes)
CREATE src/app/contactus/contactus.component.ts (281 bytes)
CREATE src/app/contactus/contactus.component.css (0 bytes)
UPDATE src/app/app.module.ts (786 bytes)
Abbiamo finito con la creazione di componenti a casa e contattaci. Di seguito sono riportati i dettagli dei componenti in app.module.ts -
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { NewCmpComponent } from './new-cmp/new-cmp.component';
import { ChangeTextDirective } from './change-text.directive';
import { SqrtPipe } from './app.sqrt';
import { HomeComponent } from './home/home.component';
import { ContactusComponent } from './contactus/contactus.component';
@NgModule({
declarations: [
SqrtPipe,
AppComponent,
NewCmpComponent,
ChangeTextDirective,
HomeComponent,
ContactusComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Ora aggiungiamo i dettagli delle rotte in app-routing.module.ts come mostrato di seguito -
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { ContactusComponent } from './contactus/contactus.component';
const routes: Routes = [
{path:"home", component:HomeComponent},
{path:"contactus", component:ContactusComponent}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
L'array delle rotte ha i dettagli del componente con percorso e componente. Il componente richiesto viene importato come mostrato sopra.
Qui, dobbiamo notare che i componenti di cui abbiamo bisogno per il routing vengono importati in app.module.ts e anche in app-routing.module.ts. Importiamoli in un unico posto, cioè in app-routing.module.ts.
Quindi creeremo un array di componenti da utilizzare per il routing ed esporteremo l'array in app-routing.module.ts e lo importeremo nuovamente in app.module.ts. Quindi abbiamo tutti i componenti da utilizzare per il routing in app-routing.module.ts.
Ecco come l'abbiamo fatto app-routing.module.ts -
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { ContactusComponent } from './contactus/contactus.component';
const routes: Routes = [
{path:"home", component:HomeComponent},
{path:"contactus", component:ContactusComponent}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { } export const
RoutingComponent = [HomeComponent,ContactusComponent];
L'array di componenti, ovvero RoutingComponent, viene importato in app.module.ts come segue:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule , RoutingComponent} from './app-routing.module';
import { AppComponent } from './app.component';
import { NewCmpComponent } from './new-cmp/new-cmp.component';
import { ChangeTextDirective } from './change-text.directive';
import { SqrtPipe } from './app.sqrt';
@NgModule({
declarations: [
SqrtPipe,
AppComponent,
NewCmpComponent,
ChangeTextDirective,
RoutingComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Quindi ora abbiamo finito con la definizione delle rotte. Dobbiamo mostrare lo stesso all'utente, quindi aggiungiamo due pulsanti, Home e Contattaci in app.component.html e al clic dei rispettivi pulsanti, verrà visualizzata la vista componenti all'interno della direttiva <router-outlet> che abbiamo hanno aggiunto add.component.html.
Crea pulsante all'interno di app.component.html e dai il percorso ai percorsi creati.
app.component.html
<h1>Angular 7 Routing Demo</h1>
<nav>
<a routerLink = "/home">Home</a>
<a routerLink = "/contactus">Contact Us </a>
</nav>
<router-outlet></router-outlet>
In .html, abbiamo aggiunto link di ancoraggio, Home e Contattaci e utilizzato routerLink per fornire il percorso alle rotte che abbiamo creato in app-routing.module.ts.
Proviamo ora lo stesso nel browser:
Ecco come lo otteniamo nel browser. Aggiungiamo un po 'di stile per rendere i collegamenti belli.
Abbiamo aggiunto il seguente css in app.component.css -
a:link, a:visited {
background-color: #848686;
color: white;
padding: 10px 25px;
text-align: center;
text-decoration: none;
display: inline-block;
}
a:hover, a:active {
background-color: #BD9696;
}
Questa è la visualizzazione dei collegamenti nel browser -
Fare clic sul collegamento Home, per vedere i dettagli dei componenti della casa come mostrato di seguito -
Fare clic su Contattaci, per vedere i dettagli dei suoi componenti come indicato di seguito -
Quando fai clic sul collegamento, vedrai anche l'URL della pagina nella barra degli indirizzi che cambia. Aggiunge i dettagli del percorso alla fine della pagina come si vede nello screenshot mostrato sopra.