SlideShare ist ein Scribd-Unternehmen logo
1
Angular 2.0: Routing
Manfred Steyer
ManfredSteyer
Inhalt
Motivation
Konfiguration
Routing-Parameter
Hierarchisches Routing
Lifecycle-Hooks
Page  2
2
Motivation
 SPAs bestehen aus einer Seite
 Innerhalb dieser werden Bereiche ein- und
ausgeblendet --> "Logische Seiten"
 Routen verweisen auf diese Seiten
 Route ist Teil der Url
 Bookmarks
 Back-Button
 Router unterstützen hierbei
Page  4
Routing unter AngularJS
Page  10
Logo + Menü
Menü2
Fußzeile
SPA
Platzhalter
3
Routing unter AngularJS
Page  11
Logo + Menü
Menü2
Fußzeile
SPA Passagier-
Komponente
/FlugDemo#flugbuchen/passagier
Hierarchische Views
Page  12
Logo + Menü
Menü2
Fußzeile
SPA
Platzhalter 1
4
Hierarchische Views
Page  13
Logo + Menü
Menü2
Fußzeile
SPA
/FlugDemo#flugbuchen
FlugBuchen-Komponente
Hierarchische Views
Page  14
Logo + Menü
Menü2
Fußzeile
SPA
/FlugDemo#flugbuchen
Optionen
Platzhalter
FlugBuchen-Komponente
5
Hierarchische Views
Page  15
Logo + Menü
Menü2
Fußzeile
SPA
/FlugDemo#flugbuchen/passagier
Optionen
Passagier-
Komponente
FlugBuchen-Komponente
Routen via Hash-Fragment
 /FlugDemo#flugbuchen/passagier
 Hash-Fragment wird nie zum Server gesendet
Page  16
6
Routen via History API
 /FlugDemo/flugbuchen/passagier
 Initialer Aufruf:
Gesamte Url wird zum Server gesendet
 Server antwortet mit SPA
 Server kann erste Ansicht "vorrendern"
 Performance, SEO, …
 SPA informiert Browser über Grenze zwischen
physischer und logischer Url
Page  17
Parameter
 /FlugDemo/flugbuchen/passagier/7
 /FlugDemo#flugbuchen/passagier/7
Page  18
7
COMPONENT ROUTER
Page  20
Vorbereitung
 Bundle für Router über Script-Verweis inkludieren:
 <script src="node_modules/angular2/bundles/router.dev.js">
</script>
 ROUTER_PROVIDERS
 Für Hash-Strategie
 provide(LocationStrategy,
{useClass: HashLocationStrategy})
Page  21
8
History API (PathLocationStrategy)
Standard
<base href="/">
Alternative: Token APP_BASE_HREF
Page  22
AppComponent
Page  23
@Component({
selector: 'app',
directives: [ROUTER_DIRECTIVES],
templateUrl: 'app/app.html'
})
@RouteConfig([
{ path: '/', component: Home,
name: 'Home', useAsDefault: true },
{ path: '/flug-suchen', component: FlugSuchen,
name: 'FlugSuchen' }
])
export class App {
[…]
}
9
View von AppComponent
Page  24
<a [routerLink]="['/Home']">Home</a>
<a [routerLink]="['/FlugSuchen']">Flug suchen</a>
<div>
<router-outlet></router-outlet>
</div>
Aktives Element bekommt Klasse 'router-link-active'
ROUTEN MIT PARAMETER
Page  25
10
Routen mit Parameter
Page  26
@Component({
selector: 'app',
directives: [ROUTER_DIRECTIVES],
templateUrl: 'app/app.html'
})
@RouteConfig([
{ path: '/', component: Home, name: 'Home' },
{ path: '/flug-suchen', component: FlugSuchen,
name: 'FlugSuchen' },
{ path: '/flug-edit/:id', component: FlugEdit,
name: 'FlugEdit' }
])
export class App {
[…]
}
Route-Parameter auslesen
Page  27
@Component({
templateUrl: 'app/components/flug-edit/flug-edit.html'
})
export class FlugEdit {
id;
constructor(params: RouteParams) {
this.id = params.get('id');
this.info = 'Flug: #' + this.id;
}
}
11
Links auf Routen mit Parameter
Page  28
<a [routerLink]="['/FlugEdit', {id: flug.id}]">Edit</a>
DEMO
Page  29
12
ZUSAMMENFASSUNG
Page  53
Zusammenfassung
Page  54
Angular:
Weite
Verbreitung
Komponenten Data-Binding
Dependency
Injection
Services Formulare
Validierung Routing
13
manfred.steyer@SOFTWAREarchitekt.at
SOFTWAREarchitekt.at
ManfredSteyer
Contact

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (8)

Rapunzel y sus invitados
Rapunzel y sus invitadosRapunzel y sus invitados
Rapunzel y sus invitados
 
Evaluation
EvaluationEvaluation
Evaluation
 
AngularJS
AngularJSAngularJS
AngularJS
 
Подключение Веб Аналитики
Подключение Веб АналитикиПодключение Веб Аналитики
Подключение Веб Аналитики
 
Возврат посетителей на сайт
Возврат посетителей на сайтВозврат посетителей на сайт
Возврат посетителей на сайт
 
Яндекс Директ на поиске
Яндекс Директ на поискеЯндекс Директ на поиске
Яндекс Директ на поиске
 
Elämänlaatu 2040 - Seuranta 2015
Elämänlaatu 2040 - Seuranta 2015Elämänlaatu 2040 - Seuranta 2015
Elämänlaatu 2040 - Seuranta 2015
 
95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht
95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht
95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht
 

Mehr von Manfred Steyer

Mehr von Manfred Steyer (20)

Der neue Component Router für Angular 2
Der neue Component Router für Angular 2Der neue Component Router für Angular 2
Der neue Component Router für Angular 2
 
Datenbindung und Performance in Angular 2
Datenbindung und Performance in Angular 2Datenbindung und Performance in Angular 2
Datenbindung und Performance in Angular 2
 
Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/store
Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/storeSingle Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/store
Single Page Applications neu gedacht: Redux in Angular 2 mit @ngrx/store
 
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
 
Angular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtet
Angular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtetAngular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtet
Angular 2: Die Ideen hinter Datenbindung und Formularen im Detail betrachtet
 
Datengetriebene Web APIs mit Entity Framework
Datengetriebene Web APIs mit Entity FrameworkDatengetriebene Web APIs mit Entity Framework
Datengetriebene Web APIs mit Entity Framework
 
Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0
Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0
Angular 2 Upgrade: Migration von AngularJS 1.x zu 2.0
 
Web APIs mit ASP.NET Core 1
Web APIs mit ASP.NET Core 1Web APIs mit ASP.NET Core 1
Web APIs mit ASP.NET Core 1
 
The newst new Router for Angular 2 ("Version 3")
The newst new Router for Angular 2 ("Version 3")The newst new Router for Angular 2 ("Version 3")
The newst new Router for Angular 2 ("Version 3")
 
Databinding and Performance-Tuning in Angular 2
Databinding and Performance-Tuning in Angular 2Databinding and Performance-Tuning in Angular 2
Databinding and Performance-Tuning in Angular 2
 
Modern authentication solutions in Angular 2 with OAuth 2.0 and OpenId Connect
Modern authentication solutions in Angular 2 with OAuth 2.0 and OpenId ConnectModern authentication solutions in Angular 2 with OAuth 2.0 and OpenId Connect
Modern authentication solutions in Angular 2 with OAuth 2.0 and OpenId Connect
 
Progressive web apps with Angular 2
Progressive web apps with Angular 2Progressive web apps with Angular 2
Progressive web apps with Angular 2
 
Der neueste neue Router (Version 3) für Angular 2
Der neueste neue Router (Version 3) für Angular 2Der neueste neue Router (Version 3) für Angular 2
Der neueste neue Router (Version 3) für Angular 2
 
Webpack
WebpackWebpack
Webpack
 
ASP.NET Core 1 for MVC- and WebAPI-Devs
ASP.NET Core 1 for MVC- and WebAPI-DevsASP.NET Core 1 for MVC- and WebAPI-Devs
ASP.NET Core 1 for MVC- and WebAPI-Devs
 
EF Core 1: News features and changes
EF Core 1: News features and changesEF Core 1: News features and changes
EF Core 1: News features and changes
 
Angular 2: Migration - SSD 2016 London
Angular 2: Migration - SSD 2016 LondonAngular 2: Migration - SSD 2016 London
Angular 2: Migration - SSD 2016 London
 
Angular 2 - SSD 2016 London
Angular 2 - SSD 2016 LondonAngular 2 - SSD 2016 London
Angular 2 - SSD 2016 London
 
ASP.NET Web API Deep Dive - SSD 2016 London
ASP.NET Web API Deep Dive - SSD 2016 LondonASP.NET Web API Deep Dive - SSD 2016 London
ASP.NET Web API Deep Dive - SSD 2016 London
 
Was bringt Angular 2?
Was bringt Angular 2?Was bringt Angular 2?
Was bringt Angular 2?
 

Angular 2: Routing

  • 1. 1 Angular 2.0: Routing Manfred Steyer ManfredSteyer Inhalt Motivation Konfiguration Routing-Parameter Hierarchisches Routing Lifecycle-Hooks Page  2
  • 2. 2 Motivation  SPAs bestehen aus einer Seite  Innerhalb dieser werden Bereiche ein- und ausgeblendet --> "Logische Seiten"  Routen verweisen auf diese Seiten  Route ist Teil der Url  Bookmarks  Back-Button  Router unterstützen hierbei Page  4 Routing unter AngularJS Page  10 Logo + Menü Menü2 Fußzeile SPA Platzhalter
  • 3. 3 Routing unter AngularJS Page  11 Logo + Menü Menü2 Fußzeile SPA Passagier- Komponente /FlugDemo#flugbuchen/passagier Hierarchische Views Page  12 Logo + Menü Menü2 Fußzeile SPA Platzhalter 1
  • 4. 4 Hierarchische Views Page  13 Logo + Menü Menü2 Fußzeile SPA /FlugDemo#flugbuchen FlugBuchen-Komponente Hierarchische Views Page  14 Logo + Menü Menü2 Fußzeile SPA /FlugDemo#flugbuchen Optionen Platzhalter FlugBuchen-Komponente
  • 5. 5 Hierarchische Views Page  15 Logo + Menü Menü2 Fußzeile SPA /FlugDemo#flugbuchen/passagier Optionen Passagier- Komponente FlugBuchen-Komponente Routen via Hash-Fragment  /FlugDemo#flugbuchen/passagier  Hash-Fragment wird nie zum Server gesendet Page  16
  • 6. 6 Routen via History API  /FlugDemo/flugbuchen/passagier  Initialer Aufruf: Gesamte Url wird zum Server gesendet  Server antwortet mit SPA  Server kann erste Ansicht "vorrendern"  Performance, SEO, …  SPA informiert Browser über Grenze zwischen physischer und logischer Url Page  17 Parameter  /FlugDemo/flugbuchen/passagier/7  /FlugDemo#flugbuchen/passagier/7 Page  18
  • 7. 7 COMPONENT ROUTER Page  20 Vorbereitung  Bundle für Router über Script-Verweis inkludieren:  <script src="node_modules/angular2/bundles/router.dev.js"> </script>  ROUTER_PROVIDERS  Für Hash-Strategie  provide(LocationStrategy, {useClass: HashLocationStrategy}) Page  21
  • 8. 8 History API (PathLocationStrategy) Standard <base href="/"> Alternative: Token APP_BASE_HREF Page  22 AppComponent Page  23 @Component({ selector: 'app', directives: [ROUTER_DIRECTIVES], templateUrl: 'app/app.html' }) @RouteConfig([ { path: '/', component: Home, name: 'Home', useAsDefault: true }, { path: '/flug-suchen', component: FlugSuchen, name: 'FlugSuchen' } ]) export class App { […] }
  • 9. 9 View von AppComponent Page  24 <a [routerLink]="['/Home']">Home</a> <a [routerLink]="['/FlugSuchen']">Flug suchen</a> <div> <router-outlet></router-outlet> </div> Aktives Element bekommt Klasse 'router-link-active' ROUTEN MIT PARAMETER Page  25
  • 10. 10 Routen mit Parameter Page  26 @Component({ selector: 'app', directives: [ROUTER_DIRECTIVES], templateUrl: 'app/app.html' }) @RouteConfig([ { path: '/', component: Home, name: 'Home' }, { path: '/flug-suchen', component: FlugSuchen, name: 'FlugSuchen' }, { path: '/flug-edit/:id', component: FlugEdit, name: 'FlugEdit' } ]) export class App { […] } Route-Parameter auslesen Page  27 @Component({ templateUrl: 'app/components/flug-edit/flug-edit.html' }) export class FlugEdit { id; constructor(params: RouteParams) { this.id = params.get('id'); this.info = 'Flug: #' + this.id; } }
  • 11. 11 Links auf Routen mit Parameter Page  28 <a [routerLink]="['/FlugEdit', {id: flug.id}]">Edit</a> DEMO Page  29
  • 12. 12 ZUSAMMENFASSUNG Page  53 Zusammenfassung Page  54 Angular: Weite Verbreitung Komponenten Data-Binding Dependency Injection Services Formulare Validierung Routing