Agenda 13.09.2018 Swiss Angular Meetup - Angular Elements 3 ▪ Intro Angular Elements ▪ Web Components ▪ Getting started with Angular Elements ▪ Outlook v7
13.09.2018 Swiss Angular Meetup - Angular Elements 5 «Angular is ideal for building complete applications, and our tooling, documentation and infrastructure are primarily aimed at this case.» Rob Wormald, Angular Team
Platform 13.09.2018 Swiss Angular Meetup - Angular Elements 6 Dependency Injection Decorators Zones Compile Binding Render Material Mobile Universal CLI Language Service Augury ngUpdate Router Animation i18n
13.09.2018 Swiss Angular Meetup - Angular Elements 7 «[…] but it’s quite challenging to use in scenarios that don’t fit that specific Singe Page Application model.» Rob Wormald, Angular Team
Use case 13.09.2018 Swiss Angular Meetup - Angular Elements 8 ▪ Enhancing existing HTML Pages ▪ Content Management Systems ▪ Use components in other environments or frameworks ▪ Microfrontends ▪ Reuse components across teams
Web Components 13.09.2018 Swiss Angular Meetup - Angular Elements 11 Web Components are a set of features added by the W3C ▪ HTML Template: Template of the HTML ▪ Shadow DOM: DOM and style encapsulation ▪ HTML Imports: Imports in HTML ▪ Custom Elements: Ability to add to the HTML vocabulary
Custom Elements 13.09.2018 Swiss Angular Meetup - Angular Elements 13 Custom elements share the same API surface as native DOM objects: ▪ Attributes ▪ Properties ▪ Methods ▪ Events
Create and Define a Custom Element 13.09.2018 Swiss Angular Meetup - Angular Elements 14 class myElement extends HTMLElement { … } customElements.define('my-element', myElement);
Platform 13.09.2018 Swiss Angular Meetup - Angular Elements 26 Dependency Injection Decorators Zones Compile Binding Render Material Mobile Universal CLI Language Service Augury ngUpdate Router Animation i18n
First Steps 13.09.2018 Swiss Angular Meetup - Angular Elements 27 Update Angular CLI Update Angular CLI to > 6 ng new angularElements Create a new Angular CLI project ng add @angular/elements Add support for angular elements ng g c matchToday -v Native Generate new component
Use with Custom Element API 13.09.2018 Swiss Angular Meetup - Angular Elements 33 const MatchToday = document.get('app-matches-today’); const matchToday = new MatchToday(); // or const matchToday = new MatchToday(differencInjector);
Dependency Injection in Angular Elements 13.09.2018 Swiss Angular Meetup - Angular Elements 36 Plattform Injector (Renderer) Module Injector (Services) Element Injector (ElementRef) Element Injector (ElementRef)
Angular Elements in V6 13.09.2018 Swiss Angular Meetup - Angular Elements 43 ▪ It is just the beginning ▪ Size is too big for shipping in non Angular projects ▪ Will be much better with Ivy (V7) ▪ Will be much easier with V7 ▪ Browser Support.