SlideShare a Scribd company logo
1 of 42
Download to read offline
Maximilian Berghoff
@ElectricMaxxx
github.com/electricmaxxx
Maximilian.Berghoff@mayflower.de
Mayflower GmbH - Würzburg
AUSBLICKAUSBLICK
Basics: Templata ng, Komponenten
Services
Advanced: Forms vs. Reac ve Forms
HISTORYHISTORY
Angular 1.x heißt jetzt AngularJS
Angular 2 und 4 sind Angular
Entwickelt in Community, der auch Google
angehört
ANGULARJS VS. ANGULARANGULARJS VS. ANGULAR
ANGULAR JSANGULAR JS
Controller als Standard für ein "MVC"
Komponenten durch Direk ven
möglich
Data-Binding everywhere
ANGULARANGULAR
Fokus auf Komponenten
Data-Binding kann/muss in der Verantwortung des
Entwicklers
Modul Struktur
Typescript als Basis
fak sch keine Migra on von AngularJS auf Angular möglich (außer
Rewrite)
Angular 2 lässt sich einfach auf 6 migrieren
AUSBLICK - THEMENAUSBLICK - THEMEN
Bootstraping - Installa on einer Skeleton App mit dem
CLI
Basics:
Templa ng, Komponenten, App-Struktur, DI
Advanced:
Forms - Data-Binding oder Reac ve
Events - Inter-Komponenten-Kommunika on
Async - Kommunika on mit einem Server
LOS GEHT'SLOS GEHT'S
TASK 1: BOOTSTRAPINGTASK 1: BOOTSTRAPING
# install CLI
npm install -g @angular/cli
# Create new skeleton app
ng new example-app
cd example-app
# run it
ng serve -o
BASICS - STRUKTURBASICS - STRUKTUR
BASIS - TEMPLATINGBASIS - TEMPLATING
TEMPLATING - INTERPOLATIONTEMPLATING - INTERPOLATION
{{ 'ich bin ein string'}}
<!-- String -->
{{ ichBinEineVariable}}
<!-- public property in component -->
{{ 'ich bin ein string' + ichBinEineVariable}}
<!-- Concatenation -->
{{ gibString() }}
<!-- Method Call -->
export class AppComponent {
ichBinEineVariable = 'app';
gibString(): string {
return 'Ich bin ein String';
}
}
TEMPLATING - EXPRESSIONSTEMPLATING - EXPRESSIONS
[property]="expression"
TEMPLATING - EXPRESSIONSTEMPLATING - EXPRESSIONS
<span [hidden]="isUnchanged">changed</span>
<!-- Sichtbarkeit von Span Element -->
<div *ngFor="let task of tasks">{{task.name}}</div>
<!-- Angular interne Direktive -->
export class AppComponent {
isUnchanged: bool = true;
tasks: Task[] = [];
}
TEMPLATING - STATEMENTSTEMPLATING - STATEMENTS
<button (click)="onClick()">Drück mich</button>
<!-- Event Handler -->
export class AppComponent {
onClick(): void {
alert('ich wurde gedrückt');
}
}
TEMPLATES - DATA BINDINGTEMPLATES - DATA BINDING
Data direc on Syntax Type
One-Way from data source to view template {{expression}},[target]="expression" Interpola on, Property, A ribute, Class, Style
One-way from view target to data source (target)="statement" Event
Two-Way [(target)]="expression" Two-Way
BASICS - TESTINGBASICS - TESTING
BASICS - DEPENDENCY INJECTIONBASICS - DEPENDENCY INJECTION
DEPENDENCY INJECTIONDEPENDENCY INJECTION
import { Injectable } from '@angular/core';
import { HEROES } from './mock-heroes';
@Injectable()
export class HeroService {
getHeroes() { return HEROES; }
}
DEPENDENCY INJECTIONDEPENDENCY INJECTION
import { Injectable } from '@angular/core';
import { HEROES } from './mock-heroes';
const heroesPromise = Promise.resolve(HEROES);
@Injectable()
export class HeroService {
getHeroes(): Promise<Hero[]> { return heroesPromise; }
}
DEPENDENCY INJECTIONDEPENDENCY INJECTION
import { Component } from '@angular/core';
import { HeroService } from './hero.service';
@Component({
selector: 'my-heroes',
providers: [HeroService],
template: `
<h2>Heroes</h2>
<hero-list></hero-list>
`
})
export class HeroesComponent {
constructor (private service: HeroService) {}
}
ADVANCEDADVANCED
ADVANCED - EVENTSADVANCED - EVENTS
EVENTS - INNER COMPONENTEVENTS - INNER COMPONENT
import {Component, EventEmitter, Input, Output} from "@angular/core";
@Component({
selector: 'inner-component',
template: '<h1>{{title}}</h1>'
})
export class InnerComponent {
@Input() title: string = '';
}
EVENTS -- INNER COMPONENT - SUBMIT EVENTEVENTS -- INNER COMPONENT - SUBMIT EVENT
import {Component, EventEmitter, Input, Output} from "@angular/core";
@Component({
selector: 'inner-component',
template: `
<h1>{{title}}</h1>
<p><button (click)="onClick()">Klick mich</button></p>
`
})
export class InnerComponent {
@Input() title: string = '';
@Output() onClick: EventEmitter<void> = new EventEmitter();
onClick() {
this.onClick.emit();
}
}
EVENTS - OUTER COMPONENTEVENTS - OUTER COMPONENT
import {Component} from "@angular/core";
@Component({
selector: 'outer-component',
template: '<inner-component [title]="title"></inner-component>'
})
export class OuterComponent {
title: string = 'Title';
onInnerClick(): void {
alert('Innen wurde gedrückt');
}
}
EVENTS - OUTER COMPONENT - CATCHINGEVENTS - OUTER COMPONENT - CATCHING
import {Component} from "@angular/core";
@Component({
selector: 'app',
template: `
<outer-component (onClick)="onInnerClick()">
</outer-component>`
})
export class AppComponent {
}
ADVANCED - FORMSADVANCED - FORMS
FORMSFORMS
import {Component} from "@angular/core";
@Component({
selector: 'app',
template: `
<form>
<input
type="text"
[(ngModel)]="name"
name="name"
id="name" />
</form>
`
})
export class AppComponent {
name: string = 'Max';
}
FORMS - REACTIVE FORMSFORMS - REACTIVE FORMS
FORMS - REACTIVE FORMSFORMS - REACTIVE FORMS
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ReactiveFormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
@NgModule({
imports: [
BrowserModule,
ReactiveFormsModule
],
declarations: [
AppComponent
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
FORMS - REACTIVE FORMS - TEMPLATEFORMS - REACTIVE FORMS - TEMPLATE
<h2>Hero Detail</h2>
<h3><i>FormControl in a FormGroup</i></h3>
<form [formGroup]="heroForm" novalidate>
<div class="form-group">
<label class="center-block">Name:
<input class="form-control" formControlName="name">
</label>
</div>
</form>
FORMS - REACTIVE FORMS - COMPONENTFORMS - REACTIVE FORMS - COMPONENT
import { Component } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
@Component({
selector: 'hero-detail',
templateUrl: 'hero-detail.html'
})
export class HeroDetailComponent {
heroForm: FormGroup;
constructor(private fb: FormBuilder) { this.createForm()}
createForm() {
this.heroForm = this.fb.group({name: ''});
}
}
FORMS - REACTIVE FORMSFORMS - REACTIVE FORMS
<p>Form value: {{ heroForm.value | json }}</p>
<p>Form status: {{ heroForm.status | json }}</p>
DIE APP - CFP FOR CODETALKS SPEAKERSDIE APP - CFP FOR CODETALKS SPEAKERS
1
2
3
4
As a Speaker i would like to enter my speaker data once, to propose my talk abstracts.
As a Speaker i would like enter my talk related data to get a speaker slot at codetalks
As a organizer of codetalks i would like to see all proposed talks in a list.
As a curator of a codetalks tracks i would like to vote on an abstract, to get it into my track or
not
CLONE REPOSITORYCLONE REPOSITORY
OROR
# repository and angular cli
$ git clone git@gitlab.com:ElectricMaxxx/code-talks-angular-hack.git
$ cd code-talks-anagular-hack
## use local node stack
$ npm install
$ npm install @angular/cli
$ ng serve -o
## OR use docker-compose
$ docker-compose up -d
# container usage
$ mkdir app
$ docker run -p 4201:4200 -d -v /absolute/path/to/app/:/usr/src/app/ registry.gitlab.com/electricmaxxx/code-talks-angular-hack:latest
QUESTIONSQUESTIONS
Ask Now!
Twi er: @ElectricMaxxx
Mail:
Maximilian.Berghoff@mayflower.de
THANK YOU!THANK YOU!

More Related Content

What's hot

Restful Web Service
Restful Web ServiceRestful Web Service
Restful Web ServiceBin Cai
 
AngularJs presentation
AngularJs presentation AngularJs presentation
AngularJs presentation Phan Tuan
 
Beyond AngularJS: Best practices and more
Beyond AngularJS: Best practices and moreBeyond AngularJS: Best practices and more
Beyond AngularJS: Best practices and moreAri Lerner
 
introduction to Angularjs basics
introduction to Angularjs basicsintroduction to Angularjs basics
introduction to Angularjs basicsRavindra K
 
Securing JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenSecuring JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenDavid Chandler
 
Angular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationAngular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationEyal Vardi
 
Building maintainable app #droidconzg
Building maintainable app #droidconzgBuilding maintainable app #droidconzg
Building maintainable app #droidconzgKristijan Jurković
 
Angular 2.0 Dependency injection
Angular 2.0 Dependency injectionAngular 2.0 Dependency injection
Angular 2.0 Dependency injectionEyal Vardi
 
Net conf BG xamarin lecture
Net conf BG xamarin lectureNet conf BG xamarin lecture
Net conf BG xamarin lectureTsvyatko Konov
 
Meetup angular http client
Meetup angular http clientMeetup angular http client
Meetup angular http clientGaurav Madaan
 
AngularJS - dependency injection
AngularJS - dependency injectionAngularJS - dependency injection
AngularJS - dependency injectionAlexe Bogdan
 
Angular App Presentation
Angular App PresentationAngular App Presentation
Angular App PresentationElizabeth Long
 
AngularJS Introduction (Talk given on Aug 5 2013)
AngularJS Introduction (Talk given on Aug 5 2013)AngularJS Introduction (Talk given on Aug 5 2013)
AngularJS Introduction (Talk given on Aug 5 2013)Abhishek Anand
 

What's hot (20)

Restful Web Service
Restful Web ServiceRestful Web Service
Restful Web Service
 
Angular from Scratch
Angular from ScratchAngular from Scratch
Angular from Scratch
 
AngularJs presentation
AngularJs presentation AngularJs presentation
AngularJs presentation
 
Beyond AngularJS: Best practices and more
Beyond AngularJS: Best practices and moreBeyond AngularJS: Best practices and more
Beyond AngularJS: Best practices and more
 
jsf2 Notes
jsf2 Notesjsf2 Notes
jsf2 Notes
 
Angular 2 binding
Angular 2  bindingAngular 2  binding
Angular 2 binding
 
introduction to Angularjs basics
introduction to Angularjs basicsintroduction to Angularjs basics
introduction to Angularjs basics
 
Securing JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top TenSecuring JSF Applications Against the OWASP Top Ten
Securing JSF Applications Against the OWASP Top Ten
 
Building maintainable app
Building maintainable appBuilding maintainable app
Building maintainable app
 
Angular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationAngular 2.0 Routing and Navigation
Angular 2.0 Routing and Navigation
 
Introduction to Unit Tests and TDD
Introduction to Unit Tests and TDDIntroduction to Unit Tests and TDD
Introduction to Unit Tests and TDD
 
Building maintainable app #droidconzg
Building maintainable app #droidconzgBuilding maintainable app #droidconzg
Building maintainable app #droidconzg
 
Angular 2.0 Dependency injection
Angular 2.0 Dependency injectionAngular 2.0 Dependency injection
Angular 2.0 Dependency injection
 
Net conf BG xamarin lecture
Net conf BG xamarin lectureNet conf BG xamarin lecture
Net conf BG xamarin lecture
 
Meetup angular http client
Meetup angular http clientMeetup angular http client
Meetup angular http client
 
AngularJS - dependency injection
AngularJS - dependency injectionAngularJS - dependency injection
AngularJS - dependency injection
 
Angular App Presentation
Angular App PresentationAngular App Presentation
Angular App Presentation
 
AngularJS Introduction (Talk given on Aug 5 2013)
AngularJS Introduction (Talk given on Aug 5 2013)AngularJS Introduction (Talk given on Aug 5 2013)
AngularJS Introduction (Talk given on Aug 5 2013)
 
Jsf intro
Jsf introJsf intro
Jsf intro
 
Angular js-crash-course
Angular js-crash-courseAngular js-crash-course
Angular js-crash-course
 

Similar to Angular Mini Hackathon Code Talks 2019

Bootiful Development with Spring Boot and Angular - Spring I/O 2017
Bootiful Development with Spring Boot and Angular - Spring I/O 2017Bootiful Development with Spring Boot and Angular - Spring I/O 2017
Bootiful Development with Spring Boot and Angular - Spring I/O 2017Matt Raible
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Ontico
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersOswald Campesato
 
Angular Js Get Started - Complete Course
Angular Js Get Started - Complete CourseAngular Js Get Started - Complete Course
Angular Js Get Started - Complete CourseEPAM Systems
 
CFUGbe talk about Angular JS
CFUGbe talk about Angular JSCFUGbe talk about Angular JS
CFUGbe talk about Angular JSAlwyn Wymeersch
 
Angular 2 - The Next Framework
Angular 2 - The Next FrameworkAngular 2 - The Next Framework
Angular 2 - The Next FrameworkCommit University
 
Angular data binding by Soft Solutions4U
Angular data binding by Soft Solutions4UAngular data binding by Soft Solutions4U
Angular data binding by Soft Solutions4Usharsen
 
Flutter vs React: взгляд нативщика / Александр Смирнов (Splyt)
Flutter vs React: взгляд нативщика / Александр Смирнов (Splyt)Flutter vs React: взгляд нативщика / Александр Смирнов (Splyt)
Flutter vs React: взгляд нативщика / Александр Смирнов (Splyt)Ontico
 
JSLab. Алексей Волков. "React на практике"
JSLab. Алексей Волков. "React на практике"JSLab. Алексей Волков. "React на практике"
JSLab. Алексей Волков. "React на практике"GeeksLab Odessa
 
Leveling up with AngularJS
Leveling up with AngularJSLeveling up with AngularJS
Leveling up with AngularJSAustin Condiff
 
Predictable Web Apps with Angular and Redux
Predictable Web Apps with Angular and ReduxPredictable Web Apps with Angular and Redux
Predictable Web Apps with Angular and ReduxFITC
 
Angular 4 for Java Developers
Angular 4 for Java DevelopersAngular 4 for Java Developers
Angular 4 for Java DevelopersYakov Fain
 
Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6William Marques
 
Modular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJSModular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJSGunnar Hillert
 
angular fundamentals.pdf angular fundamentals.pdf
angular fundamentals.pdf angular fundamentals.pdfangular fundamentals.pdf angular fundamentals.pdf
angular fundamentals.pdf angular fundamentals.pdfNuttavutThongjor1
 

Similar to Angular Mini Hackathon Code Talks 2019 (20)

Angular Workshop FrOSCon 2018
Angular Workshop  FrOSCon 2018Angular Workshop  FrOSCon 2018
Angular Workshop FrOSCon 2018
 
Bootiful Development with Spring Boot and Angular - Spring I/O 2017
Bootiful Development with Spring Boot and Angular - Spring I/O 2017Bootiful Development with Spring Boot and Angular - Spring I/O 2017
Bootiful Development with Spring Boot and Angular - Spring I/O 2017
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
 
Angular 2 in-1
Angular 2 in-1 Angular 2 in-1
Angular 2 in-1
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for Beginners
 
Angular Js Get Started - Complete Course
Angular Js Get Started - Complete CourseAngular Js Get Started - Complete Course
Angular Js Get Started - Complete Course
 
CFUGbe talk about Angular JS
CFUGbe talk about Angular JSCFUGbe talk about Angular JS
CFUGbe talk about Angular JS
 
Angular 2 - The Next Framework
Angular 2 - The Next FrameworkAngular 2 - The Next Framework
Angular 2 - The Next Framework
 
AngularJs Crash Course
AngularJs Crash CourseAngularJs Crash Course
AngularJs Crash Course
 
mean stack
mean stackmean stack
mean stack
 
Angular data binding by Soft Solutions4U
Angular data binding by Soft Solutions4UAngular data binding by Soft Solutions4U
Angular data binding by Soft Solutions4U
 
Flutter vs React: взгляд нативщика / Александр Смирнов (Splyt)
Flutter vs React: взгляд нативщика / Александр Смирнов (Splyt)Flutter vs React: взгляд нативщика / Александр Смирнов (Splyt)
Flutter vs React: взгляд нативщика / Александр Смирнов (Splyt)
 
JSLab. Алексей Волков. "React на практике"
JSLab. Алексей Волков. "React на практике"JSLab. Алексей Волков. "React на практике"
JSLab. Алексей Волков. "React на практике"
 
Leveling up with AngularJS
Leveling up with AngularJSLeveling up with AngularJS
Leveling up with AngularJS
 
AngularJS.part1
AngularJS.part1AngularJS.part1
AngularJS.part1
 
Predictable Web Apps with Angular and Redux
Predictable Web Apps with Angular and ReduxPredictable Web Apps with Angular and Redux
Predictable Web Apps with Angular and Redux
 
Angular 4 for Java Developers
Angular 4 for Java DevelopersAngular 4 for Java Developers
Angular 4 for Java Developers
 
Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6
 
Modular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJSModular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJS
 
angular fundamentals.pdf angular fundamentals.pdf
angular fundamentals.pdf angular fundamentals.pdfangular fundamentals.pdf angular fundamentals.pdf
angular fundamentals.pdf angular fundamentals.pdf
 

More from Maximilian Berghoff

Sustainability in der deploy pipeline
Sustainability in der deploy pipelineSustainability in der deploy pipeline
Sustainability in der deploy pipelineMaximilian Berghoff
 
Natural language understanding meets php php ruhr 2018
Natural language understanding meets php   php ruhr 2018Natural language understanding meets php   php ruhr 2018
Natural language understanding meets php php ruhr 2018Maximilian Berghoff
 
Search engine optimization for symfony developers
Search engine optimization for symfony developersSearch engine optimization for symfony developers
Search engine optimization for symfony developersMaximilian Berghoff
 
Introduction into FrOSCon PHP Track
Introduction into FrOSCon PHP TrackIntroduction into FrOSCon PHP Track
Introduction into FrOSCon PHP TrackMaximilian Berghoff
 
API Plattform - A Backend in Minutes
API Plattform - A Backend in MinutesAPI Plattform - A Backend in Minutes
API Plattform - A Backend in MinutesMaximilian Berghoff
 
The content manager loves the tree
The content manager loves the treeThe content manager loves the tree
The content manager loves the treeMaximilian Berghoff
 
Reactive Javascript - FrOSCon - 2016
Reactive Javascript - FrOSCon - 2016Reactive Javascript - FrOSCon - 2016
Reactive Javascript - FrOSCon - 2016Maximilian Berghoff
 
Extending a symfony application by cms features
Extending a symfony application by cms featuresExtending a symfony application by cms features
Extending a symfony application by cms featuresMaximilian Berghoff
 
Reactive java script mit rxjs basta! 2016
Reactive java script mit rxjs   basta! 2016Reactive java script mit rxjs   basta! 2016
Reactive java script mit rxjs basta! 2016Maximilian Berghoff
 
Eine Symfony Application um CMS-Funktionen erweitern
Eine Symfony Application um CMS-Funktionen erweiternEine Symfony Application um CMS-Funktionen erweitern
Eine Symfony Application um CMS-Funktionen erweiternMaximilian Berghoff
 
RESTing on HTTP - FrOSCon 10 - 2015-08-23
RESTing on HTTP - FrOSCon 10 - 2015-08-23RESTing on HTTP - FrOSCon 10 - 2015-08-23
RESTing on HTTP - FrOSCon 10 - 2015-08-23Maximilian Berghoff
 

More from Maximilian Berghoff (20)

Sustainability in der deploy pipeline
Sustainability in der deploy pipelineSustainability in der deploy pipeline
Sustainability in der deploy pipeline
 
Development is for future
Development is for futureDevelopment is for future
Development is for future
 
Development is for future
Development is for futureDevelopment is for future
Development is for future
 
Natural language understanding meets php php ruhr 2018
Natural language understanding meets php   php ruhr 2018Natural language understanding meets php   php ruhr 2018
Natural language understanding meets php php ruhr 2018
 
NLU meets PHP
NLU meets PHPNLU meets PHP
NLU meets PHP
 
Search engine optimization for symfony developers
Search engine optimization for symfony developersSearch engine optimization for symfony developers
Search engine optimization for symfony developers
 
Introduction into FrOSCon PHP Track
Introduction into FrOSCon PHP TrackIntroduction into FrOSCon PHP Track
Introduction into FrOSCon PHP Track
 
API Plattform - A Backend in Minutes
API Plattform - A Backend in MinutesAPI Plattform - A Backend in Minutes
API Plattform - A Backend in Minutes
 
The content manager loves the tree
The content manager loves the treeThe content manager loves the tree
The content manager loves the tree
 
Aspects Of Code Quality meetup
Aspects Of Code Quality   meetupAspects Of Code Quality   meetup
Aspects Of Code Quality meetup
 
Reactive Javascript - FrOSCon - 2016
Reactive Javascript - FrOSCon - 2016Reactive Javascript - FrOSCon - 2016
Reactive Javascript - FrOSCon - 2016
 
Extending a symfony application by cms features
Extending a symfony application by cms featuresExtending a symfony application by cms features
Extending a symfony application by cms features
 
Concepts of Code Quality
Concepts of Code QualityConcepts of Code Quality
Concepts of Code Quality
 
Mit dem API ins CMS
Mit dem API ins CMSMit dem API ins CMS
Mit dem API ins CMS
 
Reactive java script mit rxjs basta! 2016
Reactive java script mit rxjs   basta! 2016Reactive java script mit rxjs   basta! 2016
Reactive java script mit rxjs basta! 2016
 
Eine Symfony Application um CMS-Funktionen erweitern
Eine Symfony Application um CMS-Funktionen erweiternEine Symfony Application um CMS-Funktionen erweitern
Eine Symfony Application um CMS-Funktionen erweitern
 
RESTing on HTTP - FrOSCon 10 - 2015-08-23
RESTing on HTTP - FrOSCon 10 - 2015-08-23RESTing on HTTP - FrOSCon 10 - 2015-08-23
RESTing on HTTP - FrOSCon 10 - 2015-08-23
 
RESTing on HTTP
RESTing on HTTPRESTing on HTTP
RESTing on HTTP
 
Symfony-CMF/SeoBundle - unKonf
Symfony-CMF/SeoBundle - unKonfSymfony-CMF/SeoBundle - unKonf
Symfony-CMF/SeoBundle - unKonf
 
Rest
RestRest
Rest
 

Recently uploaded

VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of indiaimessage0108
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...APNIC
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirtrahman018755
 
Russian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
Russian Call Girls Thane Swara 8617697112 Independent Escort Service ThaneRussian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
Russian Call Girls Thane Swara 8617697112 Independent Escort Service ThaneCall girls in Ahmedabad High profile
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Sheetaleventcompany
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girlsstephieert
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxellan12
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsstephieert
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 

Recently uploaded (20)

VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of india
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICECall Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
 
Russian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
Russian Call Girls Thane Swara 8617697112 Independent Escort Service ThaneRussian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
Russian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girls
 
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girls
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
 

Angular Mini Hackathon Code Talks 2019

  • 1.
  • 3. AUSBLICKAUSBLICK Basics: Templata ng, Komponenten Services Advanced: Forms vs. Reac ve Forms
  • 5. Angular 1.x heißt jetzt AngularJS Angular 2 und 4 sind Angular Entwickelt in Community, der auch Google angehört
  • 7. ANGULAR JSANGULAR JS Controller als Standard für ein "MVC" Komponenten durch Direk ven möglich Data-Binding everywhere
  • 8. ANGULARANGULAR Fokus auf Komponenten Data-Binding kann/muss in der Verantwortung des Entwicklers Modul Struktur Typescript als Basis
  • 9. fak sch keine Migra on von AngularJS auf Angular möglich (außer Rewrite) Angular 2 lässt sich einfach auf 6 migrieren
  • 11. Bootstraping - Installa on einer Skeleton App mit dem CLI Basics: Templa ng, Komponenten, App-Struktur, DI Advanced: Forms - Data-Binding oder Reac ve Events - Inter-Komponenten-Kommunika on Async - Kommunika on mit einem Server
  • 13. TASK 1: BOOTSTRAPINGTASK 1: BOOTSTRAPING # install CLI npm install -g @angular/cli # Create new skeleton app ng new example-app cd example-app # run it ng serve -o
  • 15. BASIS - TEMPLATINGBASIS - TEMPLATING
  • 16. TEMPLATING - INTERPOLATIONTEMPLATING - INTERPOLATION {{ 'ich bin ein string'}} <!-- String --> {{ ichBinEineVariable}} <!-- public property in component --> {{ 'ich bin ein string' + ichBinEineVariable}} <!-- Concatenation --> {{ gibString() }} <!-- Method Call --> export class AppComponent { ichBinEineVariable = 'app'; gibString(): string { return 'Ich bin ein String'; } }
  • 17. TEMPLATING - EXPRESSIONSTEMPLATING - EXPRESSIONS [property]="expression"
  • 18. TEMPLATING - EXPRESSIONSTEMPLATING - EXPRESSIONS <span [hidden]="isUnchanged">changed</span> <!-- Sichtbarkeit von Span Element --> <div *ngFor="let task of tasks">{{task.name}}</div> <!-- Angular interne Direktive --> export class AppComponent { isUnchanged: bool = true; tasks: Task[] = []; }
  • 19. TEMPLATING - STATEMENTSTEMPLATING - STATEMENTS <button (click)="onClick()">Drück mich</button> <!-- Event Handler --> export class AppComponent { onClick(): void { alert('ich wurde gedrückt'); } }
  • 20. TEMPLATES - DATA BINDINGTEMPLATES - DATA BINDING Data direc on Syntax Type One-Way from data source to view template {{expression}},[target]="expression" Interpola on, Property, A ribute, Class, Style One-way from view target to data source (target)="statement" Event Two-Way [(target)]="expression" Two-Way
  • 22. BASICS - DEPENDENCY INJECTIONBASICS - DEPENDENCY INJECTION
  • 23. DEPENDENCY INJECTIONDEPENDENCY INJECTION import { Injectable } from '@angular/core'; import { HEROES } from './mock-heroes'; @Injectable() export class HeroService { getHeroes() { return HEROES; } }
  • 24. DEPENDENCY INJECTIONDEPENDENCY INJECTION import { Injectable } from '@angular/core'; import { HEROES } from './mock-heroes'; const heroesPromise = Promise.resolve(HEROES); @Injectable() export class HeroService { getHeroes(): Promise<Hero[]> { return heroesPromise; } }
  • 25. DEPENDENCY INJECTIONDEPENDENCY INJECTION import { Component } from '@angular/core'; import { HeroService } from './hero.service'; @Component({ selector: 'my-heroes', providers: [HeroService], template: ` <h2>Heroes</h2> <hero-list></hero-list> ` }) export class HeroesComponent { constructor (private service: HeroService) {} }
  • 28. EVENTS - INNER COMPONENTEVENTS - INNER COMPONENT import {Component, EventEmitter, Input, Output} from "@angular/core"; @Component({ selector: 'inner-component', template: '<h1>{{title}}</h1>' }) export class InnerComponent { @Input() title: string = ''; }
  • 29. EVENTS -- INNER COMPONENT - SUBMIT EVENTEVENTS -- INNER COMPONENT - SUBMIT EVENT import {Component, EventEmitter, Input, Output} from "@angular/core"; @Component({ selector: 'inner-component', template: ` <h1>{{title}}</h1> <p><button (click)="onClick()">Klick mich</button></p> ` }) export class InnerComponent { @Input() title: string = ''; @Output() onClick: EventEmitter<void> = new EventEmitter(); onClick() { this.onClick.emit(); } }
  • 30. EVENTS - OUTER COMPONENTEVENTS - OUTER COMPONENT import {Component} from "@angular/core"; @Component({ selector: 'outer-component', template: '<inner-component [title]="title"></inner-component>' }) export class OuterComponent { title: string = 'Title'; onInnerClick(): void { alert('Innen wurde gedrückt'); } }
  • 31. EVENTS - OUTER COMPONENT - CATCHINGEVENTS - OUTER COMPONENT - CATCHING import {Component} from "@angular/core"; @Component({ selector: 'app', template: ` <outer-component (onClick)="onInnerClick()"> </outer-component>` }) export class AppComponent { }
  • 33. FORMSFORMS import {Component} from "@angular/core"; @Component({ selector: 'app', template: ` <form> <input type="text" [(ngModel)]="name" name="name" id="name" /> </form> ` }) export class AppComponent { name: string = 'Max'; }
  • 34. FORMS - REACTIVE FORMSFORMS - REACTIVE FORMS
  • 35. FORMS - REACTIVE FORMSFORMS - REACTIVE FORMS import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { ReactiveFormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; @NgModule({ imports: [ BrowserModule, ReactiveFormsModule ], declarations: [ AppComponent ], bootstrap: [ AppComponent ] }) export class AppModule { }
  • 36. FORMS - REACTIVE FORMS - TEMPLATEFORMS - REACTIVE FORMS - TEMPLATE <h2>Hero Detail</h2> <h3><i>FormControl in a FormGroup</i></h3> <form [formGroup]="heroForm" novalidate> <div class="form-group"> <label class="center-block">Name: <input class="form-control" formControlName="name"> </label> </div> </form>
  • 37. FORMS - REACTIVE FORMS - COMPONENTFORMS - REACTIVE FORMS - COMPONENT import { Component } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; @Component({ selector: 'hero-detail', templateUrl: 'hero-detail.html' }) export class HeroDetailComponent { heroForm: FormGroup; constructor(private fb: FormBuilder) { this.createForm()} createForm() { this.heroForm = this.fb.group({name: ''}); } }
  • 38. FORMS - REACTIVE FORMSFORMS - REACTIVE FORMS <p>Form value: {{ heroForm.value | json }}</p> <p>Form status: {{ heroForm.status | json }}</p>
  • 39. DIE APP - CFP FOR CODETALKS SPEAKERSDIE APP - CFP FOR CODETALKS SPEAKERS 1 2 3 4 As a Speaker i would like to enter my speaker data once, to propose my talk abstracts. As a Speaker i would like enter my talk related data to get a speaker slot at codetalks As a organizer of codetalks i would like to see all proposed talks in a list. As a curator of a codetalks tracks i would like to vote on an abstract, to get it into my track or not
  • 40. CLONE REPOSITORYCLONE REPOSITORY OROR # repository and angular cli $ git clone git@gitlab.com:ElectricMaxxx/code-talks-angular-hack.git $ cd code-talks-anagular-hack ## use local node stack $ npm install $ npm install @angular/cli $ ng serve -o ## OR use docker-compose $ docker-compose up -d # container usage $ mkdir app $ docker run -p 4201:4200 -d -v /absolute/path/to/app/:/usr/src/app/ registry.gitlab.com/electricmaxxx/code-talks-angular-hack:latest
  • 41. QUESTIONSQUESTIONS Ask Now! Twi er: @ElectricMaxxx Mail: Maximilian.Berghoff@mayflower.de