SlideShare a Scribd company logo
Building a TV Show
with Angular, Bootstrap, and Web Services
David Giard
• Senior Technical Evangelist, Microsoft
• @DavidGiard
• davidgiard.com
• dgiard@Microsoft.com
• channel9.msdn.com/blogs/technology-and-friends
Links
• channel9.msdn.com/blogs/technology-and-friends
• angular.io/
• github.com/DavidGiard/dgtv
• tinyurl.com/dgtvslides
Single Page Applications
Traditional Web App
HTML Page
Click me!
Server
Request
Response
Thank you, David!
Single Page App
HTML Page
Click me!
Server
Request
Response
Thank you, David!
{‘
name’: ‘David’
}
Architecture
Web Service
Database
Web APIAngular 2
TypeScript
BootStrap
Single
Page
App
Function Tool
Web Service Web API
Database SQL Server
Single Page Application Angular 2 & TypeScript
Styling Bootstrap
Web API
Web API Routing
public class ValuesController : ApiController
{
public IEnumerable<string> Get() {…}
public string Get(int id) {…}
public void Post ([FromBody]string value) {… }
public void Put (int id, [FromBody]string value) {..}
public void Delete (int id) {…}
}
http://..../api/values
HTTP Verb
GET
POST
PUT
DELETE
Angular 2
and
TypeScript
Angular
• SPA Framework
• Open Source
• Data Binding
• Components
• Modularize
TypeScript
• Open Source
• Superset of JavaScript
• Transpiles to JavaScript
TypeScript
foo.ts foo.js
Transpile
foo.map
Transpile
TypeScript Transpiling
• Command Line: tsc or tsc -w
• Grunt, Gulp, etc.
• Visual Studio
TypeScript Advantages
• Productivity
• Static Type Analysis
• Language Tool Support
• Better management of large codebases
Type Checking
var num1 = 5;
var num2 = 10;
…
num2=“Fish”;
…
var sum = num1 + num2;
Type Checking
var num1: number = 5;
var num2 : number = 10;
…
num2=“Fish”;
…
var sum: number = num1 + num2;
tsconfig.json{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
typings.json
{
"ambientDependencies": {
"es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#7de6c3dd94feaeb21f20054b9f30d5dabc5efabd",
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#5c182b9af717f73146399c2485f70f1e2ac0ff2b"
}
}
Angular 2
Key Parts of Angular
• Modules
• Components
• Templates
• Directives
• Services
• Routing
• Http
Modules
Modules
• Built into Angular 2
• Makes it easier to split code into smaller pieces
• Import one module into another
• Export module to make it available for import
Modules
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
Available
outside this
module
Use exported
module
In this module
Components
Components
• Class (properties & methods)
• Decorated with @Component
• Template
• Selector
• Imported references
Templates and Selectors
Templates and Selectors
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
Selector
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
<my-app>Loading...</my-app>
Templates
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
<my-app>Loading...</my-app>
Output
Loading…
Templates
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
<my-app>Loading...</my-app>
Output
Hello World
Templates: Multi-Line
<my-app>Loading...</my-app>
Output
Hello World
Welcome
@Component({
selector: 'my-app',
template: `
<h1>Hello World</h1>
<div>
Welcome!
</div>
`
})
export class AppComponent { }
Templates: External file
@Component({
selector: 'my-app',
templateurl: 'myApp.html'
})
export class AppComponent { }
<my-app>Loading...</my-app>
Output
<h1>Hello World</h1>
<div>
Welcome!
</div>
myApp.html
Hello World
Welcome
@Component({
selector: 'my-app',
templateurl: 'myApp.html'
})
export class AppComponent { }
Bootstrapping
<my-app>Loading...</my-app>
<script>
…
System.import('app')
</script>
import {AppComponent}
from './app.component';
bootstrap(AppComponent);
Main.ts
= bootstrap file
Directives
Directives
• Allow you to attach behavior to DOM elements
Directives
• *ngFor
• *ngIf
• ngSwitch
• ngClass
• Custom Directives
*ngfor
<div *ngFor="#cust of customers">
{{cust.lastName}}, {{cust.firstName}}
</div>
var customers: Customer[] = [
{ "id": 1, "firstName": "David", "lastName" : "Giard" },
{ "id": 2, "firstName": "Bill", "lastName": "Gates" },
{ "id": 3, "firstName": "Steve", "lastName": "Ballmer" },
{ "id": 4, "firstName": "Satya", "lastName": "Nadella" }
];
Giard, David
Gates, Bill
Ballmer, Steve
Nadella, Satya
*ngIf
• Syntax: *ngif="condition"
• Removes element from DOM if condition is not “truthy”
*ngIf
<div>
<button (click)="clicked()">Toggle</button>
<div *ngIf="show">
Can you see me?
</div>
</div>
export class AppComponent {
show: boolean = true;
clicked() {this.show = !this.show; }
}
Toggle
Can you see me?
*ngIf
<div>
<button (click)="clicked()">Toggle</button>
<div *ngIf="show">
Can you see me?
</div>
</div>
export class AppComponent {
show: boolean = true;
clicked() {this.show = !this.show; }
}
Toggle
Can you see me?
LifeCycle Hooks
• OnInit
• OnChanges
• OnDestroy
OnInit
export class foo implements OnInit {
...
ngOnInit(){
...
}
}
Services
Services
• Class containing logic
• Shared Code: Used by components or other services
• Substitutable Objects
• Dependency Injection
Services
import { Injectable } from '@angular/core';
@Injectable()
export class CustService {
getCustomers() {
return customers;
}
}
var customers: Customer[] = [
{ "id": 1, "firstname": "David", "lastname": "Giard" },
{ "id": 2, "firstname": "Bill", "lastname": "Gates" },
{ "id": 3, "firstname": "Steve", "lastname": "Ballmer" },
{ "id": 4, "firstname": "Satya", "lastname": "Nadella" }
];
CustomerService.ts
Services
import { Injectable } from '@angular/core';
@Injectable()
export class CustService {
getCustomers() {
return customers;
}
}
…
CustomerService.ts
import { OnInit } from '@angular/core';
import {CustService} from CustomerService
export class AppComponent implements OnInit {
ngOnInit() {
this.customers = this.customerService.getCustomers();
}
constructor(private customerService:CustService) { }
}
Data Binding
• Simple Binding
• One-Way Property Binding
• 2-Way Property Binding
• Event Binding
1-Way Data Binding
• Square brackets around property
• []
1-Way Data Binding
@Component({
selector: 'my-app',
template: ‘<button [disabled]=" dataNotChanged">Save</button>’
})
export class AppComponent {
dataNotChanged= true;
}
Save
1-Way Data Binding
@Component({
selector: 'my-app',
template: ‘<button [disabled]=" dataNotChanged">Save</button>’
})
export class AppComponent {
dataNotChanged = true;
}
Save
1-Way Data Binding
@Component({
selector: 'my-app',
template: ‘<button [disabled]=" dataNotChanged">Save</button>’
})
export class AppComponent {
dataNotChanged = false;
}
Save
1-Way Data Binding
• Double curly braces around data
• {{}}
1-Way Data Binding
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent {
id=1;
customerFirstName='David';
customerLastName='Giard';
}
1-Way Data Binding
@Component({
selector: 'my-app',
template: '<h1>Hello {{customerFirstName}}</h1>'
})
export class AppComponent {
id=1;
customerFirstName='David';
customerLastName='Giard';
}
1-Way
Data Binding
Hello David
1-Way Data Binding
@Component({
selector: 'my-app',
template: '<h1>Hello {{customer.FirstName}}</h1>'
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
export class Customer{
FirstName: string;
LastName: string;
}
1-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: {{customer.FirstName}}</div>
<div>Last: {{customer.LastName}}
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
David Details
First: David
Last: Giard
2-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.FirstName" </div>
<div>Last: <input [(ngModel)]="customer.LastName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
2-way data binding
David Details
David
Giard
First:
Last:
1-way data binding
2-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.LastName" </div>
<div>Last: <input [(ngModel)]="customer.FirstName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
D Details
D
Giard
First:
Last:
2-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.LastName" </div>
<div>Last: <input [(ngModel)]="customer.FirstName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
Da Details
Da
Giard
First:
Last:
2-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.LastName" </div>
<div>Last: <input [(ngModel)]="customer.FirstName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
Dan Details
Dan
Giard
First:
Last:
Events binding
<control (eventname)="methodname(parameters)">
click event
<control (click)="methodtocall(parameters)">
e.g.,
<div (click)="onClick(customer)">
click
@Component({
selector: 'my-app',
template: `
<h1 (click)="onClick (customer)">{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.LastName" </div>
<div>Last: <input [(ngModel)]="customer.FirstName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
onClick(cust: Customer) { alert ("You Selected " + customer.FirstName); }
}
Routing
Routing
• Load components dynamically into page
• Link via URL
• Client-side
• Step 1: Bootstrap array of routes
Routing
const routes: RouterConfig = [
{
path: 'foo',
component: FooComponent
},
{
path: 'bar',
component: BarComponent
},
];
export const appRouterProviders = [
provideRouter(routes)
];
import { appRouterProviders } from './app.routes';
bootstrap(
AppComponent, [
appRouterProviders
]);
<a [routerLink]="[/foo']">Foo</a>
<a [routerLink]="[/bar']">Bar</a>
<router-outlet></router-outlet>
app.routes.ts
main.ts
Bootstrap routes
User clicks “Foo” link
HTTP
HTTP
import {Http } from '@angular/http';
...
this.http.get(webServiceUrl);
bootstrap(AppComponent, [
HTTP_PROVIDERS,
]);
main.ts
Component
Observables
Observables
Observable<T>
Function
Subscribe
Data
Observables
getEpisodes(): Observable<IEpisode[]> {
return Observable.create((observer: Observer<any>) => {
…
observer.next(this.episodes);
})
}
this.episodeService.getEpisodes().subscribe((data) => {
…
}
More Architecture
Model
IEpisode
id: number
title: string
description: string
dateRecorded: string
dateReleased?: string
location: string
videoUrl: string
episodeNumber: number
guests: string[]
links?: ILink[]
ILink
url: string;
title: string;
guest
Components
episodeList.component
episode.component
episode.component
episode.component
episode.component
Routing
app.component
<router-outlet></router-outlet>
…/episodeList
…/episodeList/guest/John Smith
…/episodeList/location/Chicago, IL
episodeList.component
episode.component
episode.component
episode.component
episode.component
Routing
app.component
<router-outlet></router-outlet>
…/episodeDetails/425
episodeDetails.component
Service
getEpisodes()
episodes: IEpisode[];
allEpisodes: IEpisode[];
getEpisodes()
episodeList.component
episode.service
api/episode
Subscribes to
DEMO
Links
• channel9.msdn.com/blogs/technology-and-friends
• angular.io/
• github.com/DavidGiard/dgtv
• tinyurl.com/dgtvslides

More Related Content

What's hot (20)

PDF
Vaadin 7.2
Joonas Lehtinen
 
PDF
Vaadin & Web Components
Joonas Lehtinen
 
PPT
Angular App Presentation
Elizabeth Long
 
PDF
Introduction to Vaadin
netomi
 
PDF
Angular 2 - The Next Framework
Commit University
 
PDF
Supercharge Your Pages - New Ways to Extend the Confluence Editor
Atlassian
 
PDF
Introduction to React for Frontend Developers
Sergio Nakamura
 
PDF
WOdka
WO Community
 
PDF
Android dev tips
Kanda Runapongsa Saikaew
 
PPTX
Angular introduction students
Christian John Felix
 
PPTX
Angular Js Get Started - Complete Course
EPAM Systems
 
PPTX
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB
 
PDF
Creating lightweight JS Apps w/ Web Components and lit-html
Ilia Idakiev
 
PPTX
SharePoint Saturday Ottawa 2015 - Office 365 and PowerShell - A match made in...
Sébastien Levert
 
PPTX
Angular 9
Raja Vishnu
 
PDF
MOPCON 2014 - Best software architecture in app development
anistar sung
 
PPTX
Mobile for SharePoint with Windows Phone
Edgewater
 
PPTX
Angular interview questions
Goa App
 
PDF
Production Ready Web Services with Dropwizard
sullis
 
Vaadin 7.2
Joonas Lehtinen
 
Vaadin & Web Components
Joonas Lehtinen
 
Angular App Presentation
Elizabeth Long
 
Introduction to Vaadin
netomi
 
Angular 2 - The Next Framework
Commit University
 
Supercharge Your Pages - New Ways to Extend the Confluence Editor
Atlassian
 
Introduction to React for Frontend Developers
Sergio Nakamura
 
Android dev tips
Kanda Runapongsa Saikaew
 
Angular introduction students
Christian John Felix
 
Angular Js Get Started - Complete Course
EPAM Systems
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB
 
Creating lightweight JS Apps w/ Web Components and lit-html
Ilia Idakiev
 
SharePoint Saturday Ottawa 2015 - Office 365 and PowerShell - A match made in...
Sébastien Levert
 
Angular 9
Raja Vishnu
 
MOPCON 2014 - Best software architecture in app development
anistar sung
 
Mobile for SharePoint with Windows Phone
Edgewater
 
Angular interview questions
Goa App
 
Production Ready Web Services with Dropwizard
sullis
 

Viewers also liked (20)

PDF
Bootstrap
Jadson Santos
 
PDF
Kiss and the City - Presentation
Momentom
 
PDF
Présentation Emission TV En Mode Appart
createmotions
 
PPSX
latest_tv presentation show_timing
Shady Mohamed Magdy
 
PPTX
The Voice - The Engaging Model (Valerie Janssens)
BMMA - Belgian Management and Marketing Association
 
PPT
Pitching - Thinking Of Pitching Nottingham Print
Alec McPhedran
 
PPT
BLEST_TV_Presentation
SuJen Creatives
 
PPTX
Tv news practical
iain bruce
 
PDF
Produce and pitch to perfection for TV
NatashaFennell
 
PDF
Desenvolvimento Front end (AngularJS e Bootstrap)
Julian Cesar
 
PPTX
E tv pitch
mhays3
 
PPTX
Tv presentation research
Nicole Melia
 
PPTX
Abroad Presentation
jmutch147
 
PPTX
How to Pitch an Idea - Lessons from EMC TV & Toastmasters
Matthew Broberg
 
PPTX
PowerPoint: Pitching a TV Show
profluther
 
PDF
Bootstrap 3 - Sleek, intuitive, and powerful mobile first front-end framework...
Cedric Spillebeen
 
PPT
Reality tv show concept
Ashutosh Sharma
 
PPT
10 Tips on How to Pitch a VC (FOWA, London)
Dave McClure
 
PPTX
Presentation for tv show
TomMichaelRoss
 
PDF
Bootstrap 3 Basic - Bangkok WordPress Meetup
Woratana Perth Ngarmtrakulchol
 
Bootstrap
Jadson Santos
 
Kiss and the City - Presentation
Momentom
 
Présentation Emission TV En Mode Appart
createmotions
 
latest_tv presentation show_timing
Shady Mohamed Magdy
 
The Voice - The Engaging Model (Valerie Janssens)
BMMA - Belgian Management and Marketing Association
 
Pitching - Thinking Of Pitching Nottingham Print
Alec McPhedran
 
BLEST_TV_Presentation
SuJen Creatives
 
Tv news practical
iain bruce
 
Produce and pitch to perfection for TV
NatashaFennell
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Julian Cesar
 
E tv pitch
mhays3
 
Tv presentation research
Nicole Melia
 
Abroad Presentation
jmutch147
 
How to Pitch an Idea - Lessons from EMC TV & Toastmasters
Matthew Broberg
 
PowerPoint: Pitching a TV Show
profluther
 
Bootstrap 3 - Sleek, intuitive, and powerful mobile first front-end framework...
Cedric Spillebeen
 
Reality tv show concept
Ashutosh Sharma
 
10 Tips on How to Pitch a VC (FOWA, London)
Dave McClure
 
Presentation for tv show
TomMichaelRoss
 
Bootstrap 3 Basic - Bangkok WordPress Meetup
Woratana Perth Ngarmtrakulchol
 
Ad

Similar to Building a TV show with Angular, Bootstrap, and Web Services (20)

PDF
Building Powerful Applications with AngularJS 2 and TypeScript - David Giard
ITCamp
 
PDF
Angular 2 overview in 60 minutes
Loiane Groner
 
PDF
better-apps-angular-2-day1.pdf and home
ChethanGowda886434
 
PDF
Angular2 with type script
Ravi Mone
 
PDF
Angular2 Development for Java developers
Yakov Fain
 
PDF
Angular 2 introduction
Christoffer Noring
 
PDF
Angular 2 Essential Training
Patrick Schroeder
 
PDF
Angular 4 for Java Developers
Yakov Fain
 
PPTX
Angularj2.0
Mallikarjuna G D
 
PPTX
Angular2 + rxjs
Christoffer Noring
 
PDF
Angular2 with TypeScript
Rohit Bishnoi
 
PPTX
Angularjs2 presentation
dharisk
 
PDF
Angular 2 for Java Developers
Yakov Fain
 
PPTX
Introduction to Angular2
Ivan Matiishyn
 
PPTX
yrs of IT experience in enterprise programming
narasimhulum1623
 
PPTX
Angular Framework ppt for beginners and advanced
Preetha Ganapathi
 
PPTX
Angular 2 KTS
John Vall
 
PPTX
Unit 2 - Data Binding.pptx
Malla Reddy University
 
PDF
Exploring Angular 2 - Episode 1
Ahmed Moawad
 
ODP
Angular2
kunalkumar376
 
Building Powerful Applications with AngularJS 2 and TypeScript - David Giard
ITCamp
 
Angular 2 overview in 60 minutes
Loiane Groner
 
better-apps-angular-2-day1.pdf and home
ChethanGowda886434
 
Angular2 with type script
Ravi Mone
 
Angular2 Development for Java developers
Yakov Fain
 
Angular 2 introduction
Christoffer Noring
 
Angular 2 Essential Training
Patrick Schroeder
 
Angular 4 for Java Developers
Yakov Fain
 
Angularj2.0
Mallikarjuna G D
 
Angular2 + rxjs
Christoffer Noring
 
Angular2 with TypeScript
Rohit Bishnoi
 
Angularjs2 presentation
dharisk
 
Angular 2 for Java Developers
Yakov Fain
 
Introduction to Angular2
Ivan Matiishyn
 
yrs of IT experience in enterprise programming
narasimhulum1623
 
Angular Framework ppt for beginners and advanced
Preetha Ganapathi
 
Angular 2 KTS
John Vall
 
Unit 2 - Data Binding.pptx
Malla Reddy University
 
Exploring Angular 2 - Episode 1
Ahmed Moawad
 
Angular2
kunalkumar376
 
Ad

More from David Giard (20)

PPTX
Data Visualization - CodeMash 2022
David Giard
 
PPTX
Azure data factory
David Giard
 
PPTX
Azure functions
David Giard
 
PPTX
University of Texas lecture: Data Science Tools in Microsoft Azure
David Giard
 
PPTX
University of Texas, Data Science, March 29, 2018
David Giard
 
PPTX
Intro to cloud and azure
David Giard
 
PPTX
Azure and deep learning
David Giard
 
PPTX
Azure and Deep Learning
David Giard
 
PPTX
Custom vision
David Giard
 
PPTX
Cloud and azure and rock and roll
David Giard
 
PPTX
Own your own career advice from a veteran consultant
David Giard
 
PPTX
You and Your Tech Community
David Giard
 
PPTX
Microsoft Azure IoT overview
David Giard
 
PPTX
Cloud and azure and rock and roll
David Giard
 
PPTX
Big Data on azure
David Giard
 
PPTX
Microsoft azure without microsoft
David Giard
 
PPTX
Effective Data Visualization
David Giard
 
PPTX
Containers
David Giard
 
PPTX
Cloud and azure and rock and roll
David Giard
 
PPTX
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
David Giard
 
Data Visualization - CodeMash 2022
David Giard
 
Azure data factory
David Giard
 
Azure functions
David Giard
 
University of Texas lecture: Data Science Tools in Microsoft Azure
David Giard
 
University of Texas, Data Science, March 29, 2018
David Giard
 
Intro to cloud and azure
David Giard
 
Azure and deep learning
David Giard
 
Azure and Deep Learning
David Giard
 
Custom vision
David Giard
 
Cloud and azure and rock and roll
David Giard
 
Own your own career advice from a veteran consultant
David Giard
 
You and Your Tech Community
David Giard
 
Microsoft Azure IoT overview
David Giard
 
Cloud and azure and rock and roll
David Giard
 
Big Data on azure
David Giard
 
Microsoft azure without microsoft
David Giard
 
Effective Data Visualization
David Giard
 
Containers
David Giard
 
Cloud and azure and rock and roll
David Giard
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
David Giard
 

Recently uploaded (20)

PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 

Building a TV show with Angular, Bootstrap, and Web Services

Editor's Notes

  • #27: COMPONENT = Template (view, including HTML, bindings, directives) + Class (properties / methods; created with TypeScript) + Metadata (decorator: from Angular)
  • #39: structural directives (*ngIf, *ngFor) Replaces HTML