Angular 2
Angular2 - Mikä se on?
- Framework joka on tarkoitettu Single page application (SPA)-kehitykseen
- Tarjoaa webapplikaatioiden yleisimmin tarvitsemat osat
- Http / AJAX
- Data binding (Yhdistä View ja Modelin data)
- Tapahtumakäsittely
- Router
- Antaa ohjelmalle rakenteen jota on helppo noudattaa
- Ohjelmoidaan käyttäen TypeScriptia
Angular2 ohjelman osat
-
Component
- Sisältää komponentin pohjan (template) ja tyylit
- Pääsääntöisesti ei pitäisi sisältää logiikkaa
-
Service
- Palvelut sisältävät datan käsittelyyn liittyvän logiikan
esim. Tee API-kutsu -> käsittele vastaus -> palauta kutsujalle - Käytetään esim. komponenteista
- Palvelut sisältävät datan käsittelyyn liittyvän logiikan
-
Router
- Huolehtii oikean sivun näyttämisestä (esim. saattaa “post/:id” näyttää viestin jolle kuuluu annettu id)
-
Muita osia:
- Pipes, Directives ym.
Component
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<h1>{{title}}</h1>'
})
export class AppComponent {
title = "Hello world!"
}
...
<body>
<my-app>Loading...</my-app>
</body>
...
Service
import {Injectable} from 'angular2/core';
import {Observable} from 'Rxjs/Observable';
@Injectable()
export class HelloWorldService {
getHelloWorld() {
return Observable.of("Hello world");
}
}
import {Component, OnInit} from 'angular2/core';
import {HelloWorldService} from './hello-world.service';
@Component({
selector: 'my-app',
template: '<h1 *ngIf="title">{{title}}</h1>'
})
export class AppComponent implements OnInit {
title;
constructor(private helloService: HelloWorldService) {}
ngOnInit() {
this.helloService.getHelloWorld().subscribe(hello => this.title = hello);
}
}
Tapahtumakäsittely
import {Component, OnInit} from 'angular2/core';
import {HelloWorldService} from './hello-world.service';
@Component({
selector: 'my-app',
template: '
<h1 *ngIf="title">{{title}}</h1>
<div *ngFor="#hello of hellos">{{hello}}</div>
<button (click)="addHello()">add hello </button>
'
})
export class AppComponent implements OnInit {
title: string;
hellos: string[] = [];
constructor(private helloService: HelloWorldService) {}
ngOnInit() {
this.helloService.getHelloWorld().subcribe(hello => this.title = hello);
}
addHello() {
this.helloService.getHelloWorld().subsribe(hello => this.hellos.push(hello));
}
}
HTTP
import {Injectable} from 'angular2/core';
import {Observable} from 'Rxjs/Observable';
import 'rxjs/map';
import {Http} from 'angular2/http'
@Injectable()
export class HelloWorldService {
constructor(http: Http) {}
private helloWorldApi: string = ...
getHelloWorld() {
return http.get(this.helloworldApi)
.map(response => response.json().hello)
.catch(Observable.throw(error || "Server error");
}
}
// Hello world API response
// {
// hello: "Hello world!"
(( }
Demo
- http://olemstrom.me:3000/
Angular2
By Oscar Lemström
Angular2
- 792