Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gestione del routing

Analizziamo la gestione del routing in un'applicazione basata su PHP e Angular.
Analizziamo la gestione del routing in un'applicazione basata su PHP e Angular.
Link copiato negli appunti

Iniziamo a personalizzare il nostro front-end. Cercheremo, in piccolo, di sviluppare una vera e propria SPA (Single Page Application) con tutte le caratteristiche tipiche del nostro framework: i contenuti da caricare saranno decisi in base al routing e le chiamate al backend verranno effettuate tramite service che metteranno i dati a disposizione dei component.

Quindi creiamo il file per la gestione del routing e l'accesso alla pagina iniziale. Sarà un file TypeScript posizionato nella cartella /src/app che chiameremo app.routes.ts.

Il modulo per la gestione delle rotte non fa parte del core di Angular, va quindi importato separatamente. Nella costruzione dell'applicazione mediante CLI è stato scaricato nella cartella node_modules, quindi già a nostra disposizione. Ricordiamoci inoltre di verificare che nel file index.html sia presente il tag

<base href="/">

indispensabile per il funzionamento del routing.

Procediamo con l'import:

import {Routes, RouterModule} from '@angular/router';

Definiamo ora la costante routes, un oggetto di tipo Routes che abbiamo appena importato e che conterrà l'array dei path:

const routes:Routes=[];

Il primo percorso da impostare sarà:

{path:'home', component:ReadProductsComponent},

Indicheremo due valori: il path, l'URL della pagina, e il component da montare quando saremo su questo percorso, quest'ultimo al momento non è disponibile e lo creeremo fra poco. Al primo accesso però dovremo prevedere il caso del percorso vuoto e ridirigere l'utente su home:

{path:'', redirectTo:'home', pathMatch:'full'}

Quindi, se il percorso è una stringa vuota, vi sarà una redirezione su home. Quando usiamo il redirect è obbligatorio specificare il pathMatch, cioè il tipo di corrispondenza tra la stringa e l'URL chiamato che, in questo caso, deve coincidere pienamente.

Ora esportiamo il nostro oggetto per caricarlo nel modulo principale:

export const routing=RouterModule.forRoot(routes);

La costante esportata si chiamerà routing, il metodo forRoot serve appunto a creare il modulo che stiamo esportando. Nel modulo principale possiamo ora importare il modulo creato per il routing, apriamo quindi il file app.module.ts e aggiungiamo all'array dei moduli da importare, oltre a BrowserModule già presente, il nostro routing:

import {routing} from './app.routes';

Non resta che sistemare il primo component, quello creato in fase di installazione. Partendo dal template HTML, app.component.html, ripuliremo il markup da ciò che vi è di superfluo e andremo ad aggiungere il tag che servirà come segnaposto per l'iniezione dell'HTML generato dal component caricato in base al routing:

L'HTML finale del template sarà quindi:

<div class="container">
 <div class="row">
   <div class="col-md-12">
     <div class='page-header'><h1>{{title}}</h1></div>
   </div>
 </div>
 <router-outlet></router-outlet>
</div>

Per quanto riguarda la classe TypeScript avremo il seguente codice:

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

cioè importeremo il component dal core di Angular, useremo il decoratore per indicare il CSS da applicare e il template HTML appena preparato

@Component({
   templateUrl: './app.component.html',
   styleUrls: ['./app.component.css']
})

Infine esporteremo la classe assegnando la proprietà title che verà renderizzata mediante interpolazione dal template:

export class AppComponent {
   title="Lista Prodotti";
}

Ti consigliamo anche