SlideShare ist ein Scribd-Unternehmen logo
1 von 106
http://digitaldrummerj.me
Justin James
Web Developer and Professional Speaker
http://digitaldrummerj.me/
@digitaldrummerj
http://digitaldrummerj.me 2
Welcome!
Some "rules"
Every question is important
Help each other
Have fun
http://digitaldrummerj.me 3
Agenda
Brief Intro to TypeScript
Angular Overview
Angular Forms Overview
Hands On Labs
http://digitaldrummerj.me 4
Your Experience?
HTML, CSS, JavaScript
TypeScript
Angular 1
Angular 2
http://digitaldrummerj.me
Framework for building client side applications using
HTML, CSS, and TypeScript
Angular
5
http://digitaldrummerj.me
Built In Backend IntegrationModular
Powerful Data BindingExpressive HTML
Why Angular
6
http://digitaldrummerj.me
Enhances ProductivitySimplified API
Built For SpeedModern
Why Angular 2?
7
http://digitaldrummerj.me 8
http://digitaldrummerj.me
Typed Superset of JavaScript
TypeScript
9
http://digitaldrummerj.me
Intellisense and
Syntax Checking
Lambda (=>)
Support
EncapsulationStatic typingSupports JavaScript
Features
10
http://digitaldrummerj.me
Most JavaScript is already valid TypeScript
some-javascript.jssome-javascript.js
some-typescript.ts
var items = getItems();
var goSportsTeam = true;
var super = 'mario';
11
http://digitaldrummerj.me
Dynamic
JavaScript, Python,
Ruby, PHP
var number = 5;
number = "Hello!";
// work great!
int number = 10;
number = "Hello!";
// Compiler Error
Static
C, C++, C#, Java, JADE,
Fortran, Haskell
Typing….
12
http://digitaldrummerj.me
JavaScript Typing Fun
function numberCruncher (numA, numB){
return numA + numB;
}
var result = numberCruncher(5, 5);
console.log(result);
>> 10
13
http://digitaldrummerj.me
JavaScript Typing Fun
function numberCruncher (numA, numB){
return numA + numB;
}
var result = numberCruncher(5, true);
console.log(result);
>> 6
14
http://digitaldrummerj.me
JavaScript Typing Fun
function numberCruncher (numA, numB){
return numA + numB;
}
var result = numberCruncher(5, 'js4lyfe');
console.log(result);
>> "5js4lyfe"
15
http://digitaldrummerj.me
JavaScript Typing Fun
function numberCruncher (numA, numB){
return numA + numB;
}
var result = numberCruncher(5, { param: true });
console.log(result);
>> "5[object Object]"
16
http://digitaldrummerj.me
Types
boolean, number, string
array, enum
any, void
status: string = 'TS Rocks!';
havingFun: boolean = true;
daysTillVacation: number = 60;
17
http://digitaldrummerj.me
Arrays
List of values
var myNumbers : number[] = [170, 2.6, 2245, 3032, 400];
// Or...
var myNumbers : Array<number> = [170, 2.6, 2245, 3032, 400];
18
http://digitaldrummerj.me
Arrays
Enforce types for array content
var myNumbers : number[] = [];
myNumbers.push('700');
Argument of type 'string' is not assignable to
parameter of type 'number'
19
http://digitaldrummerj.me
Functions
Input Parameter and Return Types
function myTypedFunction(paramName : dataType) : returnType {
// Regular junk here
}
20
http://digitaldrummerj.me
Functions
Input Parameter and Return Types
function trimLength(inputVal : string) : number {
return inputVal.trim().length;
}
21
http://digitaldrummerj.me
Void
A function that returns nothing
function initSomething() : void {
// do something
}
var pointless = initSomething(); // Compiler Error!
22
http://digitaldrummerj.me
Any
Restores basic JavaScript dynamic typing behavior
var foo: any;
23
http://digitaldrummerj.me
Any
Restores basic JavaScript dynamic typing behavior
var foo: any;
foo = 'Hello';
foo = true;
foo = 42;
THINK TWICE BEFORE USING!
24
http://digitaldrummerj.me
Classes
Encapsulate functionality and data for an object
Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world").greet();
25
http://digitaldrummerj.me
Interfaces
Powerful way of defining contracts
interface Label {
value: string;
}
class label implements Label {
value: string = 'label value';
}
26
http://digitaldrummerj.me
Modules
Encapsulates variables, functions, classes, etc
export interface StringValidator {
isAcceptable(s: string): boolean;
}
export const numberRegexp = /^[0-9]+$/;
export class ZipCodeValidator implements StringValidator {
isAcceptable(s: string) {
return s.length === 5 && numberRegexp.test(s);
}
}
27
http://digitaldrummerj.me
Official Website
www.typescriptlang.org
28
http://digitaldrummerj.me 29
http://digitaldrummerj.me 30
http://digitaldrummerj.me
ServicesRouting
ComponentsModules
Main Building Blocks
31
http://digitaldrummerj.me
Organize application into blocks of functionality.
Contain routes, components, services, and more.
Every app has one module minimum, the root
module.
Modules
32
< >
http://digitaldrummerj.me 33
Module Code – app.module.ts< >
http://digitaldrummerj.me 34
Module Code – app.module.ts< >
http://digitaldrummerj.me 35
Module Code – app.module.ts< >
http://digitaldrummerj.me 36
Module Code – app.module.ts< >
http://digitaldrummerj.me
Most basic building block of the UI
Contains a template, stylesheet, and data logic
Can include other components
Provides CSS Isolation
Component
37
< >
http://digitaldrummerj.me 38
Component – app.component.ts< >
http://digitaldrummerj.me 39
Component – app.component.ts< >
http://digitaldrummerj.me 40
Component – app.component.ts< >
http://digitaldrummerj.me
HTML to tell Angular how to render a component
Include data binding as well as other components
and directives
Leverages native DOM events and properties
Template
41
< >
http://digitaldrummerj.me
Template – app.component.html
42
< >
http://digitaldrummerj.me
Data Binding
43
< >
http://digitaldrummerj.me
Data Binding
44
< >
http://digitaldrummerj.me
Data Binding
45
< >
http://digitaldrummerj.me
Data Binding
46
< >
http://digitaldrummerj.me 47
Template – more complex example< >
http://digitaldrummerj.me 48
Template – more complex example< >
http://digitaldrummerj.me 49
Template – more complex example< >
http://digitaldrummerj.me 50
Template – more complex example< >
http://digitaldrummerj.me
Renders component based on the URL state
Drives navigation
Lazy Loading
Parent/Child Routes
Restricted Routes
Routing
51
< >
http://digitaldrummerj.me 52
Routing Code< >
http://digitaldrummerj.me 53
Routing Code< >
http://digitaldrummerj.me
Data layer
Logic is not component related
Invariably asynchronous
Services
54
< >
http://digitaldrummerj.me 55
Service Code< >
http://digitaldrummerj.me 56
Service Code< >
http://digitaldrummerj.me 57
Service Code< >
http://digitaldrummerj.me 58
Service – Getting Data< >
http://digitaldrummerj.me 59
Service – Getting Data< >
http://digitaldrummerj.me 60
Service – Getting Data< >
http://digitaldrummerj.me 61
Component – Receiving Data< >
http://digitaldrummerj.me 62
Component – Receiving Data< >
http://digitaldrummerj.me 63
Component – Receiving Data< >
http://digitaldrummerj.me
Use Environment Files
Can generate build with different environments
Application
Settings
64
http://digitaldrummerj.me
export const environment ={
production: false,
environmentName: 'Local',
apiBaseUrl: 'http://localhost:3000'
};
Environment File – environment.ts
65
http://digitaldrummerj.me 66
Angular Lifecycle
Create Render
Create
&
Render
Children
Process
Change
Destroy
http://digitaldrummerj.me
OnDestroyOnChangesOnInit
Lifecycle Events
67
http://digitaldrummerj.me
• http://nodejs.org
Node JS (suggest 6.9+ LTS)
• npm install -g @angular/cli
NPM Global Packages
Global
Setup
68
http://digitaldrummerj.me
• ng new AppName --style scss –routing
Create New Project
• ng generate [TYPE] [NAME]
Generate
• ng serve -e=ENV_NAME
Start Application
• ng test
Unit Test
• ng lint
Linting
Creating
Applications
69
http://digitaldrummerj.me
ng build --target=development --environment=dev
Example:
ng build --dev--environment=dev
ng build --prod --environment=prod
Angular Deploy
70
http://digitaldrummerj.me 71
Angular Release Plan
Weekly - Patches
Monthly – Minor Versions
Every 6 Months – Major Versions
Major Version Release Timeframe
Angular 4 March 2017
Angular 5 Sept/Oct 2017
Angular 6 March 2018
Angular 7 Sept/Oct 2018
http://digitaldrummerj.me
Semantic Versioning (SEMVER)
72
http://digitaldrummerj.me 73
Migrating from Angular 1
Google has no plans to update Angular 1 to match Angular 2
Suggestion:
• Leave existing applications in Angular 1
• Use Angular 2 for new applications
http://digitaldrummerj.me 74
http://digitaldrummerj.me 75
http://digitaldrummerj.me
FormArrayFormGroupFormControl
Building Blocks of Forms
76
http://digitaldrummerj.me
First Name required
Justin
Name
firstName
Value
Justin
Validator
required
Valid
true
FormControl
77
http://digitaldrummerj.me
FormControl
name: street
FormControl
name: city
FormControl
name: state
FormControl
name: zip
FormGroup
78
Street ___________________________________________________
City __________________ State ____________ Zip _____________
http://digitaldrummerj.me
FormControl 0
FormControl 1
FormControl 2
FormArray
79
Street _____________________________
City ________State ____ Zip __________
Street _____________________________
City ________State ____ Zip __________
Street _____________________________
City ________State ____ Zip __________
http://digitaldrummerj.me
Model Driven
(ReactiveFormsModule)
Template Driven
(FormsModule)
2 Types Of Forms
80
http://digitaldrummerj.me
All About
ngModel
Implicitly Applies
Directives to Form
Template Driven Approach
81
http://digitaldrummerj.me
Lightweight ComponentSimplicity
Benefits of Template Driven Approach
82
http://digitaldrummerj.me
Not
Testable
Template HTML
Hard to Read
Complexity Grows
Very Fast
Drawbacks of Template Driven Approach
83
http://digitaldrummerj.me
Enable Template Drive Approach
app.module.ts
84
http://digitaldrummerj.me
Template Driven Form - Template
85
http://digitaldrummerj.me
Template Driven Form Submit - Component
86
http://digitaldrummerj.me
Pattern
MaxLengthMax
NullEmailRequired
Built-in Validators
Min MinLength
https://angular.io/api/forms/Validators
87
http://digitaldrummerj.me
Pristine
Dirty
Valid
Invalid
Touched
Untouched
Form Control States
88
https://angular.io/guide/forms#track-control-state-and-validity-with-ngmodel
http://digitaldrummerj.me
Template Driven Form Validation - Template
89
http://digitaldrummerj.me
Data Binding
Implicitly Created
Validation Done
In Component
Form Setup
In Component
Model Driven Approach
90
http://digitaldrummerj.me
Can Monitor
Form Changes
Typings
Prevent Errors
More
Maintainable
Extendable
Validation Rules
Testable
Benefits of Model Driven Approach
91
http://digitaldrummerj.me
????
Only Makes Sense
If Logic Is Complex
Drawbacks of Model Driven Approach
92
http://digitaldrummerj.me
Enable Model Drive Approach
app.module.ts
93
http://digitaldrummerj.me
Model Driven Form - Template
94
http://digitaldrummerj.me
Model Driven Form - Component
95
http://digitaldrummerj.me
Model Driven Form Submit
96
http://digitaldrummerj.me
Model Driven Form Validation - Template
97
http://digitaldrummerj.me
Model Driven Form Validation - Component
98
http://digitaldrummerj.me
Model Driven Form Watch For Changes
99
http://digitaldrummerj.me
Model Driven Form Generic Validation
100
http://digitaldrummerj.me
Template Driven
(FormsModule)
Implicit creation of FormControl()
Source of truth: template
Async
No Unit Testing
Model Driven
(ReactiveFormsModule)
Explicit creation of FormControl()
Source of truth: component class
Sync
Unit Testable
101
http://digitaldrummerj.me
Labs
http://digitaldrummerj.me/angular-tutorial
Template and Reactive Forms
Services
Route Guards
Header/Footer
Environment Settings
102
http://digitaldrummerj.me
Angular Style Guide
Angular API Reference
Angular 1 to Angular Comparison
Architecture Overview
Angular CLI Docs
Additional
Resources
103
http://digitaldrummerj.me
please submit your evaluations
104
http://digitaldrummerj.me
Follow Me @digitaldrummerj
http://digitaldrummerj.me 106
Introductions
Tell us about yourself.
• Who are you?
• What do you hope to get out of the class?
• Which of your web projects are you most proud of?

Weitere ähnliche Inhalte

Was ist angesagt?

Micronaut: Changing the Micro Future
Micronaut: Changing the Micro FutureMicronaut: Changing the Micro Future
Micronaut: Changing the Micro FutureZachary Klein
 
EWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectEWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectRob Tweed
 
AngularJS Project Setup step-by- step guide - RapidValue Solutions
AngularJS Project Setup step-by- step guide - RapidValue SolutionsAngularJS Project Setup step-by- step guide - RapidValue Solutions
AngularJS Project Setup step-by- step guide - RapidValue SolutionsRapidValue
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeedYonatan Levin
 
A gently introduction to AngularJS
A gently introduction to AngularJSA gently introduction to AngularJS
A gently introduction to AngularJSGregor Woiwode
 
EWD.js: The Future Starts Here
EWD.js: The Future Starts HereEWD.js: The Future Starts Here
EWD.js: The Future Starts HereRob Tweed
 
Sharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFSharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFPierre-Yves Ricau
 
The Past Year in Spring for Apache Geode
The Past Year in Spring for Apache GeodeThe Past Year in Spring for Apache Geode
The Past Year in Spring for Apache GeodeVMware Tanzu
 
Managing user's data with Spring Session
Managing user's data with Spring SessionManaging user's data with Spring Session
Managing user's data with Spring SessionDavid Gómez García
 
Spring Boot Revisited with KoFu and JaFu
Spring Boot Revisited with KoFu and JaFuSpring Boot Revisited with KoFu and JaFu
Spring Boot Revisited with KoFu and JaFuVMware Tanzu
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Eliran Eliassy
 
Using React with Grails 3
Using React with Grails 3Using React with Grails 3
Using React with Grails 3Zachary Klein
 
Angular2 and TypeScript
Angular2 and TypeScriptAngular2 and TypeScript
Angular2 and TypeScriptDavid Giard
 
Burn your grass with react native
Burn your grass with react nativeBurn your grass with react native
Burn your grass with react nativeEugene Zharkov
 
Flutter hooks tutorial (part 1) flutter animation using hooks (use effect and...
Flutter hooks tutorial (part 1) flutter animation using hooks (use effect and...Flutter hooks tutorial (part 1) flutter animation using hooks (use effect and...
Flutter hooks tutorial (part 1) flutter animation using hooks (use effect and...Katy Slemon
 

Was ist angesagt? (20)

Micronaut Launchpad
Micronaut LaunchpadMicronaut Launchpad
Micronaut Launchpad
 
Micronaut: Changing the Micro Future
Micronaut: Changing the Micro FutureMicronaut: Changing the Micro Future
Micronaut: Changing the Micro Future
 
EWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectEWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode Object
 
AngularJS Project Setup step-by- step guide - RapidValue Solutions
AngularJS Project Setup step-by- step guide - RapidValue SolutionsAngularJS Project Setup step-by- step guide - RapidValue Solutions
AngularJS Project Setup step-by- step guide - RapidValue Solutions
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeed
 
A gently introduction to AngularJS
A gently introduction to AngularJSA gently introduction to AngularJS
A gently introduction to AngularJS
 
EWD.js: The Future Starts Here
EWD.js: The Future Starts HereEWD.js: The Future Starts Here
EWD.js: The Future Starts Here
 
Sharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFSharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SF
 
AngularJs
AngularJsAngularJs
AngularJs
 
The Past Year in Spring for Apache Geode
The Past Year in Spring for Apache GeodeThe Past Year in Spring for Apache Geode
The Past Year in Spring for Apache Geode
 
Managing user's data with Spring Session
Managing user's data with Spring SessionManaging user's data with Spring Session
Managing user's data with Spring Session
 
Spring Boot Revisited with KoFu and JaFu
Spring Boot Revisited with KoFu and JaFuSpring Boot Revisited with KoFu and JaFu
Spring Boot Revisited with KoFu and JaFu
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
 
AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014
 
Angular js
Angular jsAngular js
Angular js
 
Using React with Grails 3
Using React with Grails 3Using React with Grails 3
Using React with Grails 3
 
Angular2 and TypeScript
Angular2 and TypeScriptAngular2 and TypeScript
Angular2 and TypeScript
 
Burn your grass with react native
Burn your grass with react nativeBurn your grass with react native
Burn your grass with react native
 
Flutter hooks tutorial (part 1) flutter animation using hooks (use effect and...
Flutter hooks tutorial (part 1) flutter animation using hooks (use effect and...Flutter hooks tutorial (part 1) flutter animation using hooks (use effect and...
Flutter hooks tutorial (part 1) flutter animation using hooks (use effect and...
 
Angular2 for Beginners
Angular2 for BeginnersAngular2 for Beginners
Angular2 for Beginners
 

Ähnlich wie Up and Running with Angular

Getting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with ThymeleafGetting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with ThymeleafMasatoshi Tada
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'sAntônio Roberto Silva
 
Building Web Apps Sanely - EclipseCon 2010
Building Web Apps Sanely - EclipseCon 2010Building Web Apps Sanely - EclipseCon 2010
Building Web Apps Sanely - EclipseCon 2010Chris Ramsdale
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Matt Raible
 
Java springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology MeetupJava springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology MeetupAccenture Hungary
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB
 
Jiayi Hu - Get hyper-excited for web standards - Codemotion Rome 2019
Jiayi Hu - Get hyper-excited for web standards - Codemotion Rome 2019Jiayi Hu - Get hyper-excited for web standards - Codemotion Rome 2019
Jiayi Hu - Get hyper-excited for web standards - Codemotion Rome 2019Codemotion
 
the grinder testing certification
the grinder testing certificationthe grinder testing certification
the grinder testing certificationVskills
 
JavaScript Modules Past, Present and Future
JavaScript Modules Past, Present and FutureJavaScript Modules Past, Present and Future
JavaScript Modules Past, Present and FutureIgalia
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCLFastly
 
Panmind at Ruby Social Club Milano
Panmind at Ruby Social Club MilanoPanmind at Ruby Social Club Milano
Panmind at Ruby Social Club MilanoPanmind
 
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Matt Raible
 
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016PROIDEA
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務Mu Chun Wang
 
Angular JS deep dive
Angular JS deep diveAngular JS deep dive
Angular JS deep diveAxilis
 

Ähnlich wie Up and Running with Angular (20)

ql.io at NodePDX
ql.io at NodePDXql.io at NodePDX
ql.io at NodePDX
 
Getting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with ThymeleafGetting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with Thymeleaf
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
 
GraphQL @ Wix
GraphQL @ WixGraphQL @ Wix
GraphQL @ Wix
 
Building Web Apps Sanely - EclipseCon 2010
Building Web Apps Sanely - EclipseCon 2010Building Web Apps Sanely - EclipseCon 2010
Building Web Apps Sanely - EclipseCon 2010
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 
Java springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology MeetupJava springboot microservice - Accenture Technology Meetup
Java springboot microservice - Accenture Technology Meetup
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDB
 
JBoss World 2010
JBoss World 2010JBoss World 2010
JBoss World 2010
 
Hexagonal architecture
Hexagonal architectureHexagonal architecture
Hexagonal architecture
 
Jiayi Hu - Get hyper-excited for web standards - Codemotion Rome 2019
Jiayi Hu - Get hyper-excited for web standards - Codemotion Rome 2019Jiayi Hu - Get hyper-excited for web standards - Codemotion Rome 2019
Jiayi Hu - Get hyper-excited for web standards - Codemotion Rome 2019
 
the grinder testing certification
the grinder testing certificationthe grinder testing certification
the grinder testing certification
 
JavaScript Modules Past, Present and Future
JavaScript Modules Past, Present and FutureJavaScript Modules Past, Present and Future
JavaScript Modules Past, Present and Future
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
Panmind at Ruby Social Club Milano
Panmind at Ruby Social Club MilanoPanmind at Ruby Social Club Milano
Panmind at Ruby Social Club Milano
 
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
 
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
 
Mvc - Titanium
Mvc - TitaniumMvc - Titanium
Mvc - Titanium
 
Angular JS deep dive
Angular JS deep diveAngular JS deep dive
Angular JS deep dive
 

Mehr von Justin James

KCDC 2018 - Rapid API Development with Sails
KCDC 2018 - Rapid API Development with SailsKCDC 2018 - Rapid API Development with Sails
KCDC 2018 - Rapid API Development with SailsJustin James
 
Angular Unit Testing NDC Minn 2018
Angular Unit Testing NDC Minn 2018Angular Unit Testing NDC Minn 2018
Angular Unit Testing NDC Minn 2018Justin James
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsJustin James
 
Mobile Dev For Web Devs
Mobile Dev For Web DevsMobile Dev For Web Devs
Mobile Dev For Web DevsJustin James
 
Angular Unit Testing from the Trenches
Angular Unit Testing from the TrenchesAngular Unit Testing from the Trenches
Angular Unit Testing from the TrenchesJustin James
 
Everyone is a Public Speaker
Everyone is a Public SpeakerEveryone is a Public Speaker
Everyone is a Public SpeakerJustin James
 
Visual Studio Tools for Apache Cordova (TACO) and Ionic
Visual Studio Tools for Apache Cordova (TACO) and IonicVisual Studio Tools for Apache Cordova (TACO) and Ionic
Visual Studio Tools for Apache Cordova (TACO) and IonicJustin James
 
Ionic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentIonic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentJustin James
 
Chocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pieChocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pieJustin James
 
Nuget is easier than you think and you should be using it as both a consumer ...
Nuget is easier than you think and you should be using it as both a consumer ...Nuget is easier than you think and you should be using it as both a consumer ...
Nuget is easier than you think and you should be using it as both a consumer ...Justin James
 

Mehr von Justin James (10)

KCDC 2018 - Rapid API Development with Sails
KCDC 2018 - Rapid API Development with SailsKCDC 2018 - Rapid API Development with Sails
KCDC 2018 - Rapid API Development with Sails
 
Angular Unit Testing NDC Minn 2018
Angular Unit Testing NDC Minn 2018Angular Unit Testing NDC Minn 2018
Angular Unit Testing NDC Minn 2018
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with Sails
 
Mobile Dev For Web Devs
Mobile Dev For Web DevsMobile Dev For Web Devs
Mobile Dev For Web Devs
 
Angular Unit Testing from the Trenches
Angular Unit Testing from the TrenchesAngular Unit Testing from the Trenches
Angular Unit Testing from the Trenches
 
Everyone is a Public Speaker
Everyone is a Public SpeakerEveryone is a Public Speaker
Everyone is a Public Speaker
 
Visual Studio Tools for Apache Cordova (TACO) and Ionic
Visual Studio Tools for Apache Cordova (TACO) and IonicVisual Studio Tools for Apache Cordova (TACO) and Ionic
Visual Studio Tools for Apache Cordova (TACO) and Ionic
 
Ionic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentIonic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application Development
 
Chocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pieChocolatey - making the process of installing software on windows easy as pie
Chocolatey - making the process of installing software on windows easy as pie
 
Nuget is easier than you think and you should be using it as both a consumer ...
Nuget is easier than you think and you should be using it as both a consumer ...Nuget is easier than you think and you should be using it as both a consumer ...
Nuget is easier than you think and you should be using it as both a consumer ...
 

Kürzlich hochgeladen

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 

Kürzlich hochgeladen (20)

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 

Up and Running with Angular

Hinweis der Redaktion

  1. done
  2. Background 63 63 63 Var 239 220 188 Mario = 204 147 147 Base color white Comments 127 159 127 Function 227 206 171
  3. Modules – building blocks that contain routes, components, services, and more. Components – contains a template, data and logic forming part of a DOM tree. Routing – Renders a component based on the URL state, drives navigation. Services – Data layer, logic that is not component related, such as API requests.
  4. The arrows indicate the direction data is traveling. {{ }} – standard data binding like we had in Angular 1 but now 1 way data binding by default. [property] – ability to bind to any html attribute or property (event) – can hook into any HTML event like click or onchange. No need for ng-click anymore [(ngModel)] – two way data binding
  5. The arrows indicate the direction data is traveling. {{ }} – standard data binding like we had in Angular 1 but now 1 way data binding by default. [property] – ability to bind to any html attribute or property (event) – can hook into any HTML event like click or onchange. No need for ng-click anymore [(ngModel)] – two way data binding
  6. The arrows indicate the direction data is traveling. {{ }} – standard data binding like we had in Angular 1 but now 1 way data binding by default. [property] – ability to bind to any html attribute or property (event) – can hook into any HTML event like click or onchange. No need for ng-click anymore [(ngModel)] – two way data binding
  7. The arrows indicate the direction data is traveling. {{ }} – standard data binding like we had in Angular 1 but now 1 way data binding by default. [property] – ability to bind to any html attribute or property (event) – can hook into any HTML event like click or onchange. No need for ng-click anymore [(ngModel)] – two way data binding
  8. Events – input, blur, click,
  9. Events – input, blur, click,
  10. Events – input, blur, click,
  11. Events – input, blur, click,
  12. Done http://sailsjs.com/get-started
  13. In forms, there are three main building blocks: FormControl, FormGroup, and FormArray In Angular, the form control's model is tracked in something called a FormControl(). It’s one of the three building blocks of Angular forms. FormGroups are collections of FormControl instances, registered by name. A form itself is simply a FormGroup. The last building block is the FormArray. Like FormGroup, it consists of child controls, but registered by index as an array. This is a good model if you have children of unknown or dynamic length.
  14. In Angular, the form control's model is tracked in something called a FormControl(). It’s one of the three building blocks of Angular forms.
  15. Sometimes you’ll have form controls that make more sense to conceptualize as a group - for instance, an address. FormGroups are collections of FormControl instances, registered by name.
  16. The last building block is the FormArray. Like FormGroup, it consists of child controls, but registered by index as an array. This is a good model if you have children of unknown or dynamic length.
  17. There are two available forms modules: the FormsModule (also known as Template Driven or Angular 1 style forms) and the ReactiveFormsModule (also known as reactive forms). But before we talk about their differences, let’s start by discussing some of the underlying structure that both modules have in common.
  18. The forms module is Angular 1 style, so everything goes through the template. Your changes are made through directives, so you won’t be instantiating FormControls, FormGroups, or FormArrays directly. This will be done implicitly for you by the directives and their inputs. Tends to be easier at the beginning but harder as you try to tackle more complex concepts. For instance, in order to maintain unidirectional data flow in the template, template-driven forms have to be asynchronous.This can lead to the normal gotchas associated with async in development and testing. In reactive forms, you explicitly instantiate the FormControls and FormGroups as needed. You’re directly manipulating the form control models in the component class yourself. This is an investment up front, and often more boilerplate, but it’s also more explicit. There’s no magic going on under the hood and you’re not constrained by the template. For this reason, reactive forms tend to behave more predictably. Everything can be synchronous and as you might imagine, it’s easier to feed into reactive patterns because you’re working in the class without the template in the middle. That being said, these are both legitimate approaches based on your coding style and your preferences, so it’s really up to you what’s right for your application.
  19. Done
  20. Done http://sailsjs.com/documentation/concepts/assets/disabling-grunt http://sailsjs.com/documentation/concepts http://sailsjs.com/documentation/concepts/configuration/the-local-js-file https://www.manning.com/books/sails-js-in-action