Ein Sixpack Framework

Auf dem Weg zu Angular 6: Finales Release veröffentlicht!

Dominik Mohilo, Ann-Cathrin Klose

© Angular.io / Shutterstock Spring Bine

Angular 6 ist fertig! Endlich. Mit insgesamt einiger Verzögerung, aber lediglich wenige Tage nach dem siebten Relase Candidate, erschien nun die aktuelle Version des Frameworks. Wir haben die wichtigsten Änderungen zusammengefasst.

Im September 2016 erschien mit Angular 2 der langersehnte Nachfolger zum beliebten Angular.js und mit dem Redesign wurden auch sämtliche Brücken zum Vorgänger niedergebrannt, das semantische Versionierungsmodell eingeführt. Nachdem Angular 3 übersprungen wurde, veröffentlichte man mit Angular 4 dann die erste Version mit Langzeitsupport. Diese hatte einige neue Features im Gepäck, allerdings war auf die Abwärtskompatibilität uneingeschränkt Verlass.

Das im letzten Jahr veröffentlichte Angular 5 ging den Weg, der bereits mit Angular 4 eingeschlagen wurde, weiter: Änderungen wurden fließend und möglichst nahtlos in das Framework implementiert, denn keiner möchte kurz- oder mittelfristig ein erneutes radikales Redesign – am wenigsten die Nutzer. Mit Angular 6 erschien nun das nächste große Major Release.
Update vom 4. Mai 2018

Angular 6.0.0: Endlich ist es da!

Ziemlich genau einen Monat nach dem angekündigten Releasedatum von Angular 6 ist die finale Version da. Angular 6 integriert das Framework, Angular Material und Angular CLI in ein Release und bringt alle Teile des Projekts auf einen gemeinsamen Versionsstand.

Angular 6: Interview & Fachartikel

Achtung! In diesem Thread fassen wir lediglich die wichtigsten Neuerungen zusammen. Einen Fachartikel zum Release von Angular 6 gibt es, geschrieben von Karsten Sitterberg, ebenfalls auf JAXenter. Auf der JAX 2018 haben wir zudem ein Interview mit Manfred Steyer geführt, in dem er uns den neuen Ivy Renderer und die Features der aktuellen Version näherbringt.

Unsere Artikel zu Angular 6

Update und Add via CLI

Zu den neuen Features gehört der neue CLI-Befehl ng update, das für das Update von Dependencies genutzt werden kann. Neu ist außerdem ng add, das neue Dependencies über den Package Manager herunterlädt und automatisch installiert. Damit kann eine Anwendung beispielsweise mit nur einem Befehl zur PWA gemacht werden: ng add @angular/pwa. Für die Nutzung von ng add müssen allerdings spezifische Packages verfügbar sein, die auf Schematics aufbauen. Das Angular-Team hofft, dass die Community daran mitwirken wird, zumal ng add Packages von npm zieht und somit eine bekannte Plattform dahinter steht.

Angular Elements ist nun ebenfalls fertig und in Angular 6 integriert worden. Hier liegt in diesem Release der Schwerpunkt darauf, Angular Components bootstrapen zu können. Dafür werden die Components als Custom Elements registriert. Außerdem sind Angular Material und das Component Development Kit mit dabei in der neuen Version. Hier gehört eine neue Tree-Komponente zur Darstellung hierarchischer Daten zu den wichtigsten Neuerungen. Mit den Starter Components kann außerdem ein Grundgerüst für das Frontend einer Anwendung angelegt im Stil des Material Designs werden. Das erfolgt über das Kommando ng add @angular/material .

Die Dependencies von Angular 6

Zu Angular 6 wurde auch an den Dependencies gearbeitet. @angular/core setzt nun TypeScript 2.7, RxJS 6.0.0 und tslib 1.9.0 voraus; @angular/platform-server arbeitet jetzt mit Domino 2.0. Die Breaking Changes an Angular 6 wurden bereits im Rahmen der Beta-Releases vorgestellt. Dazu gehört eine Änderung am Umgang mit Animationen in Bereichen, in denen die Ausführung der Animation nicht möglich ist. Hier muss jetzt das Property event.disabled genutzt werden, um über mögliche Fehler informiert zu werden. Am Compiler wurde das bereits in Angualr 4 als deprecated markierte Tag <template> zu Version 6 endgültig entfernt. Stattdessen muss nun <ng-template> genutzt werden. Außerdem können Funktionen für Animationen nicht mehr aus dem Core importiert werden. Zwei weitere Breaking Changes betreffen Forms.

Einen Überblick über alle weiteren Neuerungen geben die Release Notes im Angular-Blog sowie das Changelog auf GitHub. Für Informationen zum Update auf die neue Version hat das Angular-Team einen Guide zur Verfügung gestellt, der Informationen spezifisch zur jeweils zuvor verwendeten Projektversion ausgibt.



Update vom 2. Mai 2018

Angular 6.0.0-rc.6 veröffentlicht: Sind aller guten Dinge 7?

Angular 6.0.0-rc.6 ist da und bringt als nun schon siebter Release Candidate von Angular 6 vier Bugfixes mit. Zwei davon betreffen den Compiler. Bislang führte die Ausgabe eines undefined Program von ng.performCompilation zum Absturz von ngc-wrapped. Um das zu vermeiden, wird nun zuerst auf Fehler geprüft und in diesem Fall eine entsprechende Meldung ausgegeben.

Bugfixes in Angular 6.0.0-rc.6

Ebenfalls in den Bereich des Compilers fällt ein weiterer Bug bei der Handhabung von undefinierten Annotation Metadata, der nun gefixed wurde. Auch am Router und bezüglich der Integration von Service Workers wurde jeweils ein Bug gefixed. Neue Features wurden in den siebten von ursprünglich drei angekündigten Release Candidates nicht mehr integriert. Viel getan hat sich also seit der letzten RC-Version von Angular 6 nicht.

Wirft man einen Blick auf die eigenständig entwickelten neuen Features, die zu Angular 6 fertiggestellt und mit dem Hauptprojekt integriert ausgeliefert werden sollen, sieht man allerdings, dass das Team nicht untätig war. Angular Material mit dem neuen Component Development Kit ist ebenfalls noch in Arbeit; hier steht derzeit Version 6.0.0-rc.14 zum Testen bereit, die ebenfalls vier Bugfixes mitbringt. In den Milestones wird Angular Material für Angular 6 als zu 96 Prozent vollständig bezeichnet. Die einzige noch offene Issue hier betrifft die Dokumentation, alle 30 weiteren Issues sind geschlossen.

Angular CLI: Fast fertig!

Für das Angular CLI sind in den vergangenen Tagen gleich mehrere Release Candidates erschienen. Auch dieses Projekt ist laut Milestones zu 93 Prozent vollständig, alle offenen Issues sind als „Priority: 3 (nice to have)“ kategorisiert. Hier zeigen sich also deutliche Fortschritte, auch wenn das CLI noch nicht so weit fortgeschritten ist wie Angular Material.

Der Milestone für Angular 6 steht hingegen noch auf einem Fortschritt von 63 Prozent. Hier finden sich noch sieben offene Issues, eine davon bezieht sich auf einen möglichen Bug bei der Arbeit mit Service Workern in der neusten Version von Chrome. In Bezug auf die Integration von RxJS 6, das letzte Woche final erschienen ist, kann in der entsprechenden Issue nachgelesen werden, dass die Arbeit am Support dafür in Angular 6 fast abgeschlossen ist. Hier finden sich nur noch drei unerledigte Aufgaben im Plan. An Angular 6 scheint also noch das ein oder andere vor dem finalen Release zu erledigen zu sein, auch wenn sich Fortschritte ausmachen lassen.

Kein Release Date für Angular 6

Ein neues Release-Datum für Angular 6 wurde noch nicht angekündigt. Im vorläufigen Release Schedule für Angular 6 findet sich noch immer der 4.4 als Release Datum. Detaillierte Informationen über den aktuellen Release Candidate gibt es wie immer auf GitHub.



Update vom 16. April 2018

Angular 6 lässt weiter auf sich warten – Release Candidate Nummer 6 ist raus

Wer gehofft hatte, die Woche würde mit der „General Availability“ von Anguler 6 starten, der wird erneut bitter enttäuscht sein. Statt des finalen Major Releases kommt erneut eine Vorabversion – Angular 6.0.0-rc.5 ist bereits der dritte ungeplante Meilenstein auf dem Weg der neuesten Framework-Version. Aber bei all dem Trübsal, das man nun blasen kann, sollte man nicht aus den Augen verlieren, dass diese Verzögerungen Gründe haben. Wer will schon mit einer unfertigen oder einer fehlerhaften Version arbeiten? Besonders heikel wäre das in Bezug auf Angular 6, da diese Version ein Release mit Langzeitunterstützung (Long Term Support / LTS) ist. Nicht auszudenken, wenn gerade dieser Version nicht zuvor auf Herz und Nieren geprüft würde.

Das ist neu im sechsten Meilenstein

Zwei neue Features hat das Update im Gepäck, eines für den Service Worker, das andere für den Platform Browser. Ersteres betrifft die Unterstützung für die Konfiguration einer optionalen Liste sogenannter Navigations-URLs (navigationUrls) in ngsw-config.json. In Zukunft sollen so nur jene Requests als Navigations-Requests erkannt und vom Service Worker als solche behandelt werden, deren URLs denen auf der Liste entspricht. Ausschließen lassen sich URLs ebenfalls (URLs oder Muster, die mit einem ! beginnen).

Im Platform Browser wurde ein neues Token hinzugefügt. Dieses kann als Marker genutzt werden, um damit den Animationskontext zu bestimmen, der für die jeweilige Komponente zur Laufzeit verwendet wird. Bisher war es zum Beispiel nicht möglich zu bestimemn, ob eine Komponente im Kontext eines BrowserAnimationsModule oder eines NoopAnimationsModule läuft.

Bugfixes

  • compiler: use correct global name in compiler.umd.js (#23354) (b76dd3b), closes #23343
  • compiler-cli: shorten resolved module name in fileNameToModuleName to npm package name for typings (#23231) (6199ea5)
  • elements: include schematics in npm distro (#23350) (9fabe2f)
  • service-worker: let * match 0 characters in globs (#23339) (6c2c958)

 

Weitere Informationen zum Update gibt es, wie immer, auf GitHub.



Update vom 13. April 2018

Angular 6.0.0-rc.4: Wieder Bugfixes & ein neues Feature

Der nunmehr fünfte Release Candidate für Angular 6 wurde veröffentlicht und das Team rund ums Web-Framework bleibt damit der traditionellen Roadmap-Untreue treu. In der offiziellen Release Schedule waren von lediglich drei RC-Versionen die Rede, das Major selbst sollte bereits vor neun Tagen veröffentlicht werden.

Die Anzahl an Bugfixes, immerhin wurden erneut sieben Fehler korrigiert, sprechen dafür, dass es doch größere Probleme mit der neuen Hauptversion gab:

Das neue Feature betrifft die Custom Elements. So wurden Angular 6 ein neues Anfangsschema hinzugefügt. Dieses bringt für Custom Elements den angemessenen Polyfill, also ein Workaround-Script, das Elemente auch in alten Browserversionen noch funktionieren.

Weitere Informationen zum Update gibt es, wie immer, auf GitHub.



Update vom 09. April 2018

Nur einen Tag nach dem dritten Release Candidate folgte schon das vierte RC-Release zu Angular 6. Angekündigt waren nur drei Release Candidates, so ist es auch immer noch im Release Schedule nachzulesen. Auch ist noch immer kein neues Datum für die finale Veröffentlichung angekündigt worden. Der vierte Release Candidate, Angular 6.0.0-rc.3, bringt allerdings nur zwei Bugfixes mit, keine größeren Änderungen mehr:

  • bazel: don’t produce ngfactory files for ng_packages (#23237) (da58a55)
  • compiler-cli: don’t lower expressions in flat module metadata (#23226) (11ea3a3)

Zu Angular CLI, das als eigenständiger Projektzweig noch vor dem Release von Angular 6 ins Hauptprojekt integriert werden soll, stehen mittlerweile Release Notes zum dritten Release Candidate (Angular CLI v6.0.0-rc.2) zur Verfügung, der letzte Woche erschienen ist. Diese fassen allerdings eher die neuen Features zusammen als einen Einblick in den gegenwärtigen Entwicklungsstand zu geben. Hier ist aber nachzulesen, dass das Angular CLI zu Version 6 beispielsweise einen verbesserten Library-Support mitbringen wird und mit ng update Updates von Dependencies, inklusive dem CLI selbst, erlauben wird. Alle bisher benannten Neuerungen können in den Release Notes zum dritten Release Candidate nachgelesen werden.



Update vom 06. April 2018

Angular 6: Neuer Release Candidate erschienen

Ein weiterer Fortschritt auf dem Weg zu Angular 6: Version 6.0.0-rc.2 ist erschienen und zeigt, dass es durchaus vorwärts geht in der Entwicklung. Das trifft auch auf Angular CLI und Angular Material zu.

Ein neues Feature und sieben Bugfixes bringt Angular 6.0.0-rc.2, also der dritte Release Candidate von Angular 6 mit. Das neue Feature betrifft erneut das Compiler-CLI; unter den Bugfixes betrifft einer den Core. Insgesamt bleibt das Release jedoch klein und lässt somit erkennen, dass im zweiten Release Candidate, der letzte Woche erschienen ist, weniger Fehler gefunden wurden als im vorherigen.

Angular 6: CLI & CDK?

Auch jetzt steht jedoch noch die Implementierung weiterer Projekte in Angular 6 aus, die noch vor dem finalen Release erfolgen soll. Dies wurde im Rahmen des erste Release Candidates angekündigt. Es betrifft sowohl das Angular CLI als auch Angular Material mit dem Component Development Kit (CDK). Verzögerungen im Entwicklungsfortschritt von Angular 6 könnten also auf Probleme mit diesen noch zu implementierenden Projekten zurückzuführen sein.

Auch bei diesen Projekten zeigt sich aber ein Fortschritt. Angular CLI hat mit dem Hauptprojekt gleichgezogen und liegt nun auch als v6.0.0-rc.2 vor. Angular Material, inklusive CDK, ist immerhin inzwischen zumindest auch in die Release-Candidate-Phase eingetreten.

Wann kommt Angular 6?

Wann Angular 6 final erscheinen wird, ist allerdings immer noch nicht bekannt. Angekündigt war das Release für diese Woche, der Release Schedule wurde nicht verändert. Tatsächlich könnte die Veröffentlichung nun aber kurz bevor stehen: Angular 6.0.0-rc.2 soll laut Release Schedule der letzte Release Candidate gewesen sein. Auch in der Beta-Phase wurden schlussendlich aber zwei Versionen mehr veröffentlicht als geplant.



Update vom 03. April 2018

Angular 6: Wann kommt das Release?

Der zweite Release Candidate von Angular 6 ist da und bringt erneut zwei Features mit. Kann das Release Date so gehalten werden? Noch sieht es eher so aus, als sei Angular 6 schwer in Arbeit.

Mit Angular 6.0.0-rc.1 steht der zweite Release Candidate für die neue Major Version zum Download bereit. Mit dabei sind zwei neue Features, die beide aber keine Zweifel an der Aussage aufkommen lassen, dass Angular 6 eigentlich Feature Complete ist:

  • bazel: prefix private-export (barred-latin-o) symbols (#23007) (27e14b2)
  • compiler: lower @NgModule ids if needed (#23031) (bd024c0)

Feature Complete oder nicht?

Immerhin war ja schon im Rahmen des ersten Release Candidates darauf verwiesen worden, dass einige Integrationen anderer Tools  noch in Arbeit seien; Bazel gehört somit offenbar dazu. Neben den zwei neuen Features bringt Angular 6.0.0-rc.1 zahlreiche Bugfixes mit, die verschiedene Bereiche des Frameworks betreffen. Gearbeitet wurde für den zweiten Releaase Candidate noch an Bazel, den Animationen, dem Compiler, dem Core und Service Workers. Der zweite Release Candidate von Angular 6 erschien am Freitag und damit neun Tage später, als das im vorläufigen Release Plan benannte Datum – zu beachten ist allerdings, dass hier Wochen benannt werden, in denen ein Release erfolgen soll, nicht exakte Release Tage.

Heute ist außerdem der erste Release Candidate des Command Line Interfaces Angular CLI für Version 6.0 erschienen. Dies ist dem GitHub Repository des offiziellen Projekts zu entnehmen; Release Notes fehlen jedoch noch.

Die Angular 6 Milestones: Kein finales Release in Sicht?

Das finale Release von Angular 6 wurde zuletzt für die Woche nach dem 4.4. angekündigt. Da der Release Schedule allerdings einen dritten Release Candidate ankündigte, ist nicht anzunehmen, dass dieses Datum eingehalten werden wird. Diese Vermutung stützt auch die Tatsache, dass unter den Milestones für die v6-Candidates auf GitHub noch 24 offene Issues gelistet werden und der Projektfortschritt als 53 Prozent vollständig angegeben ist.

Auch die für den 4.4. terminierten Milestones für v6.0 lassen vermuten, dass das Release nicht morgen erfolgen wird. Hier konnte bislang nur eine von 9 Issues geschlossen werden; das bedeutet aber natürlich nicht, dass alle weiteren Features noch viel Arbeit benötigen, um in Angular 6 implementiert werden zu können. Hier sei auf den Status des Ivy Renderers verwiesen: Dieses Feature soll als Beta-Version implementiert werden und ist insofern selbst noch nicht fertig, wie der Projektseite entnommen werden kann. Das bedeutet allerdings nicht, dass eine Verzögerung von Angular 6 darin begründet liegen würde.

Wann kommt Angular 6?

Bislang wurde der vorläufige Release-Plan für Angular 6 noch nicht aktualisiert. Aus vergangenen Releases ist aber bekannt, dass die angekündigte Zahl von Release Candidates nicht immer stimmen muss. So wurden in der Beta-Phase für Angular 6 zwei Releases mehr veröffentlicht als angekündigt, andererseits könnte im Rahmen der Release Candidates auch eine Version weniger vor dem finalen Release erfolgen. Mit einer morgigen Veröffentlichung von Angular 6 ist aber nicht zu rechnen.



Update vom 21. März 2018

Angular 6: Erster Release Candidate veröffentlicht

Fangen wir mit der schlechten Nachricht an: Das Release Date für Angular 6 wurde verschoben. Die gute Nachricht: Nicht besonders weit. Nachdem Angular 6 bislang für den 28.3. angekündigt war, wird jetzt der 4.4. als Veröffentlichungsdatum in der Release Schedule genannt. Die Verzögerung spiegelt sich bereits in der Zahl der Beta-Versionen wieder. So sollte Angular 6.0.0‑beta.6 ursprünglich die letzte Betaversion sein. Tatsächlich ist nun gemeinsam mit dem ersten Release Candidate Angular 6.0.0-beta.8, also die 9. Beta, erschienen und hat noch einmal einige Änderungen mitgebracht.

Angular 6.0.0-rc.0: Der erste Release Candidate ist da

Angular 6 ist mit Veröffentlichung des Release Candidates Feature Complete – alle neuen Features sind fertig und im Release Candidate enthalten. Jetzt geht es also nur noch darum, die neue Version zu testen und Fehler zu beheben – fast. Noch in Arbeit sind nämlich das CLI und Angular Material/Component Development Kit. Die Arbeiten daran sollen aber bis zum finalen Release abgeschlossen sein, sodass die Integration in Version 6 erfolgen kann.

Angular 6.0.0-rc.0 bringt vor allem Bugfixes mit, umfasst allerdings auch noch einmal zwei kleine, neue Features für den Core. Dabei handelt es sich um Updates: Der Package Output von build.sh wurde auf v6 des Angular Package Formats gebracht; außerdem wurde die rxjs-Dependency aktualisiert. rxjs wurde in Version 6.0.0-beta.0 implementiert; für dieses Update steht ein eigener Upgrade Guide bereit. Breaking Changes hat der Release Candidate nicht mehr mitgebracht.

Angular 6.0.0-beta.8: Features und Breaking Changes

Mehr Neuerungen gab es hingegen in Angular 6.0.0-beta.8, die zeitgleich mit dem Release Candidate erschienen ist. Die (nun wirklich) letzte Beta bringt zahlreiche neue Features, ein neues Code Refactoring und vier Breaking Changes mit.

Zu den neuen Features gehört, dass nun Node 8 als Runtime-Engine nötig ist, ältere Versionen also nicht mehr unterstützt werden. Ansonsten handelt es sich weitgehend um kleinere Neuerungen: So wurden zahlreiche neue Features für Angular/Elements umgesetzt, dabei handelt es sich jedoch um Features wie ein zusätzliches Polyfill oder Tests für die Component Factory Strategy.

Zu den Breaking Changes für Angular 6, die im Rahmen der letzten Beta vorgestellt wurden, gehört, dass das bereits in Angular 4 als deprecated markierte <template>-Tag nun gar nicht mehr unterstützt wird. Stattdessen muss nun <ng-template> verwendet werden:

<!-- html template -->
 
<ng-template>some template content</ng-template>

Ein weiterer Breaking Change betrifft den Core: In Angular 6 können keine Funktionen im Zusammenhang mit Animationen mehr aus @angular/core importiert werden. Das ist nur noch via @angular/animations möglich. npm und yarn geben künftig außerdem Warnungen bei inkompatiblen peerDependencies aus. Ebenfalls unter Breaking Changes wird aufgeführt, dass tslib nun für die Application/Library package.json mindestens in Version 1.9.0 vorliegen muss. Das Angular-Team erwartet hier allerdings nicht, dass diese Änderung tatsächlich dazu führt, dass Anwendungen nicht mehr funktionieren.

Nach Angular 6.0.0-beta.6, die Anfang Mai erschien, wurde außerdem noch 6.0.0-beta.7 veröffentlicht. Dabei handelt es sich ausschließlich um ein Bugfix-Release, das keine neuen Features mitbrachte.

Alle Informationen zu den Releases können im Angular Changelog auf GitHub nachgelesen werden.



Update vom 01. März 2018

Angular 6: Letzte Beta mit Breaking Changes & Angular Roadmap 2018 veröffentlicht

Noch in diesem Monat soll Angular 6 erscheinen. Jetzt ist die voraussichtlich letzte Beta erschienen – allerdings zum zweiten mal unter dem Namen „Angular 6.0.0-beta.5“, unter dem bereits die vorherige Beta geführt wurde. Da es sich laut Release Schedule von Angular 6 jedoch um Angular 6.0.0-beta.6 handeln muss, steht nun wohl die letzte Beta-Version zum Download bereit. In der kommenden Woche soll dann bereits der erste Release Candidate folgen. Die Release Notes zur neuen Beta vermischen jedoch Informationen zum neusten und zum vorherigen Beta-Release, sodass die gegenwärtige Beta auf den ersten Blick größer wirkt als sie ist.

Breaking Changes in Angular 6

Die neuste Beta-Version von Angular 6 bringt erneut einige neue Features sowie Breaking Changes mit. Dazu gehört dieses mal eine Änderung an AbstractControl#statusChanges , das nun ein Event weitergibt, wenn markAsPending aufgerufen wird. Projekte, die Events von statusChanges filtern oder abfragen, müssen entsprechend angepasst werden. Alle weiteren Breaking Changes können in den Release Notes nachgelesen werden.

Außerdem bringt die neue Beta zahlreiche neue Features mit. Unter anderem wurde hier am Core gearbeitet. preserverWhitespace steht jetzt standardmäßig auf false. Die Dependency Domino wurde auf Version 2.0 gesetzt. Auch dabei handelt es sich um einen potentiellen Breaking Change.

Daneben wurde an der Integration von Bazel in Angular weitergearbeitet, einem der Features, die nun im Rahmen der Feature-Roadmap 2018 näher vorgestellt wurden. Dabei handelt es sich um ein Multi-Language-Build-Tool, das bei Google schon lange im Einsatz ist und unter Open-Source-Lizenz für eigene Projekte genutzt werden kann. Nun arbeitet das Angular-Team an der Adaption von Bazel für Angular. Die Implementierung hat bereits begonnen, wie die bisherigen Beta-Versionen von Angular 6 zeigen.

Neue Features für Angular 2018

Zu den für 2018 geplanten neuen Features gehört natürlich auch der Ivy Renderer. Damit soll Angular kleiner werden, das Compiling soll schneller gehen und der Code leichter zu debuggen sein. Der Ivy Renderer soll allerdings so implementiert werden, dass daraus keine Breaking Changes entstehen. Bislang befindet sich Ivy im Feature-Flag-Status, die Arbeit am Renderer ist nicht abgeschlossen. Aktiviert werden kann Ivy in den derzeitigen Beta-Builds mit dem Compiler-Options-Flag enableIvy: true. Das Team, das am neuen Renderer arbeitet, geht davon aus, dass der Feature-Flag-Status erhalten bleiben wird, bis alle Features von Ivy fertig sind. Die Übersicht auf GitHub zeigt, dass das bislang nicht der Fall ist. Auch in den Angular Milestones wird der Ivy Renderer für Angular 6 als Beta-Feature geführt.

Für das Jahr 2018 ist außerdem ein neues Feature namens Angular Elements geplant, das das Einbetten von Angular-Anwendungen in andere Anwendungen erlauben soll, die nicht mit Angular entwickelt wurden. Mit Angular Elements soll es möglich sein, Angular-Komponenten als Web Components zu veröffentlichen. Vincent Ogloblinsky hat das Projekt in einem Blogpost näher vorgestellt.

TypeScript 2.7 in Angular 6

Brad Green stellt im Angular-Blog noch eine Reihe weiterer neuer Features für Angular vor, die im laufenden Jahr realisiert werden sollen. Den Milestones für Angular 6 ist außerdem zu entnehmen, dass die für Ende März angekündigte Version Support für TypeScript 2.7 mitbringen wird. Sichtbar ist hier allerdings auch, dass noch viel zu tun ist, wenn alle dort benannten Features zu Angular 6 umgesetzt werden sollen. Nicht einmal mehr einen Monat vor dem geplanten Releasedate von Angular 6 ist beispielsweise dort vermerkt, dass von 21 gepanten Aufgaben für den RxJS-6-Support bislang keine umgesetzt wurde. Allerdings ist auch RxJS 6 auch noch nicht final erschienen, sodass zumindest fraglich ist, ob dieser Milestone zu Angular 6 mit Erscheinungsdatum am 28.3. realisiert werden kann.

Alle Neuerungen am neusten Beta-Release von Angular 6 können wie immer in den Release Notes auf GitHub nachgelesen werden.



Update vom 23. Februar 2018

Angular 6.0.0-beta.5: Erste Breaking Changes für Angular 6

Angular 6.0.0-beta.5, also das sechste Beta-Release von Angular 6, bringt zahlreiche Bugfixes, einige neue Features und zwei Breaking Changes mit. Mit dieser vorletzten Beta-Version für Angular 6 beginnt der Endspurt auf dem Weg zum finalen Release, das für den 28. März angekündigt ist. In nur noch knapp mehr als einem Monat soll Angular 6 also fertig sein. Jetzt geht es ans Eingemachte.

Breaking Changes

Der erste der Breaking Changes, die in Angular 6.0.0-beta.5 eingeführt wurden, bezieht sich auf sich auf Animationen. Bislang haben Animationen eine totalTime von 0 angegeben, wenn die Ausführung in einem Bereich ausgelöst wurde, in dem Animationen deaktiviert sind. In Angular 6 wird stattdessen die tatsächliche Zeit der Animation ausgegeben. Um festzustellen, ob ein Event eine deaktivierte Animation meldet, muss nun das Property event.disabled verwendet werden.

Der größere Breaking Change betrifft ngModelChange, das nun nicht mehr weitergegeben wird, bevor die zugrunde liegende Control aktualisiert wurde. Stattdessen erfolgt die Weitergabe von ngModelChange erst, wenn value/validity in der Control aktualisiert wurde. Die bisherige Lösung habe dann Probleme verursacht, wenn ein Handler für das ngModelChange-Event verwendet wurde, der den Wert vom Control abfragt. Hier wurde bislang der alte Wert übergeben. Im Changelog zu Angular 6.0.0-beta.5 finden sich detaillierte Informationen zu dieser Neuerung, inklusive Code-Beispielen. Dort wird auch darauf verwiesen, dass Anwendungen nur dann aufgrund dieses Breaking Changes aktualisiert werden müssen, wenn die bisherige Ausgabe des alten Werts gezielt eingesetzt wurde, um diesen zu kontrollieren. Um dieses Verhalten beizubehalten, könne der alte Wert direkt in der Komponente gespeichert werden.

Neue Features in Angular 6.0.0-beta.5

Außerdem wurden fünf neue Features in Angular 6.0.0-beta.5 integriert. Dazu gehören verbesserte Fehlermeldungen bei Verwendung von Non-Template-Elementen in NgIf, sowie ein Check auf unzulässige Kombinationen von ngc und TypeScript im Compiler-CLI. Im Bereich des Core wurde eine Metadata Reflection für native Class Types eingeführt. Außerdem wird im Bereich Platform-Browser nun keine Fehlermeldung mehr ausgegeben, wenn Hammer.js nicht geladen werden kann und hammerOptions sind nun konfigurierbar.

Auch in Angular 6.0.0-beta.4 gab es vier neue Features. So können nun multiple Validatoren für die Array Method in Formularen verwendet werden, im Compiler wird @NgModules jetzt außerdem in der Provider-Liste markiert, um zur Laufzeit identifiziert zu werden.

Der Releasezweig 5.2.x von Angular hat nun außerdem Version 5.2.6 erreicht. Sowohl diese als auch die Vorgängerversion umfassen ausschließlich Bugfixes und bringen keine neuen Features mit.



Update vom 08. Februar 2018

Angular 6.0.0-beta.3 und Angular 5.2.4 sind da

Auf dem Weg zu Angular 6 sind bislang keine größeren Verzögerungen zu bemerken: Gestern erschien Angular 6.0.0-beta.3 pünktlich zum in der Roadmap angesetzten Termin. Vor dem ersten Release Candidate sollen nun noch drei weitere Betaversionen folgen. Langsam wird also sichtbar, welche Schwerpunkte Angular 6 setzt. Dabei sticht vor allem der neue Ivy Renderer hervor.

Angular 6.0.0-beta.3: Der neue Ivy Renderer

Angular 6.0.0-beta.3 bringt insgesamt vier neue, kleinere Features mit. Darunter ist eine Neuerung am Compiler-CLI: Statische Methoden, die zu Klassen hinzugefügt werden, werden jetzt in den Metadaten reflektiert. Alle anderen neuen Features betreffen allerdings den neuen Ivy Renderer: Hier wurden ein kanonisches Beispiel für Pipes und Support für Attribute von ng-content Nodes hinzugefügt. Außerdem werden in Ivy nun Array Literals in Render3 memoisiert. An der Performance des Ivy Renderers wurde ebenfalls gleich geschraubt und einige Bugs wurden behoben. Der gegenwärtige Projektstatus des neuen Renderers kann im GitHub-Issue zu Ivy eingesehen werden. Als Milestone ist hier Angular 6 angegeben, was bestätigt, dass der sich derzeit noch in der Beta befindliche Ivy Renderer mit Angular 6 ausgeliefert werden soll.

Die vorherige Betaversion, Angular 6.0.0-beta.2, brachte zwei neue Features mit. Eines davon betrifft den Router. Dort wurden navigationSource und restoredState zum NavigationStart-Event hinzugefügt. Außerdem umfasste das Release ein neues Helper Script zur Deinstallation von Service Workers.

Angular 5.2.3 und 5.2.4

Angular 5.2.3 und 5.2.4 bringen als Updates für den aktuellen Releasezweig keine neuen Features mit, sondern umfassen nur Bugfixes. Alle Informationen zu den neuen Features der Beta-Releases und den Bugfixes in allen vier vorgenannten Versionen können dem Changelog auf GitHub entnommen werden. Auf GitHub stehen zudem die neuen Versionen auch zum Download bereit.



Update vom 26. Januar 2018

Angular 6.0.0-beta.1 und Angular 5.2.2 sind da

Zwei neue Releases für Angular sind da: In Version 5.2.2 wurden zahlreiche Bugs behoben, während mit 6.0.0-beta.1 die zweite Beta-Version für Angular 6 vorliegt. Damit liegt das Angular-Team bisher gut im Zeitplan, wie der Release-Planung entnommen werden kann. Geplant sind fünf weitere Beta-Releases, denen drei Release Candidates folgen sollen, jeweils mit einem Release pro Woche. Die finale Version soll in der Woche vom 28. März erscheinen, also in zwei Monaten.

Angular 6.0.0-beta.1

Wie immer werden Angular-Releases ab Version 0 gezählt; bei Angular 6.0.0-beta.1 handelt es sich also bereits um das zweite Beta-Release. Die neue Version bringt zwei neue, kleine Features mit: Zum einen wurde dem Compiler wurde die Option „enableIvy“ hinzugefügt. Wie dem entsprechenden Pull Request zu entnehmen ist, ist die Implementierung bislang aber auf interne Tests von Ivy beschränkt, da sich Ivy (bzw. Render 3 Code Generation) selbst noch in der Entwicklung befindet. Die derzeitige Implementierung stellt also noch keinen volltsändigen Ivy-Support dar. Das zweite neue Feature betrifft den Core. Hier wurde optional generic Type für ElementRef hinzugefügt. Außerdem umfasst das Release zahlreiche Bugfixes.

Angular 5.2.2

Angular 5.2 ist der letzte Stable-Release-Zweig, der vor der Veröffentlichung von Angular 6 gepflegt wird. Geplant sind Versionen bis Angular 5.2.10, die bis Mitte März erscheinen sollen und dann von Angular 6 abgelöst werden. Die nun erschienene Version Angular 5.2.2 ist ein Bugfix-Release und bringt keine neuen Features mit. Darunter sind folgende Änderungen am Compiler, Compiler-CLI und Router:

  • compiler: Don’t strip /*# sourceURL … */
  • compiler: fix ICU select messages to use male/female/other
  • compiler-cli: do not fold errors past calls in the collector
  • compiler-cli: do not lower expressions in non-modules
  • router: don’t use ParamsInheritanceStrategy in declarations

Alle Informationen zu den neuen Versionen gibt es im Changelog auf GitHub. Dort ist auch die Release Schedule zu finden.



Update vom 18. Januar 2018

Angular 6: Die ersten neuen Features zum Testen freigegeben

Während noch fleißig an den Minor Releases für den Angular-5-Zyklus gearbeitet wird, hat die Betaphase für Angular 6 endlich begonnen. Die nächste Hauptversion des Frameworks ist für den 28. März geplant, allerdings wissen wir ja aus der Vergangenheit, dass solche Termine bei Angular mit leichter Vorsicht zu genießen sind.

Vernünftigerweise wird ein Release von Angular nämlich für gewöhnlich hinausgezögert, bis alle Kleinigkeiten und Bugs nach bestem Wissen und Gewissen auspoliert bzw. behoben sind. Entwickler können sich dennoch darauf einstellen, dass Angular 6 Ende März oder Anfang April erscheinen wird, viel länger sollte es definitiv nicht dauern.

Gemeinsam mit Angular 6.0.0-beta.0 wurde auch Angular 5.2.1 veröffentlicht, dessen gesamte Bugfixes in die erste Betaversion von Version 6 des Frameworks einfließen. Auch Features des Minor Releases sind in der ersten Iteration von Angular 6 enthalten.

Neu in Angular 6

In Fehlermeldungen, die Nutzer erhalten, wird ab sofort der Name des Bindings mit angegeben. Dadurch hat man mehr Überblick, was genau geändert wurde. Auch die Tests wurden entsprechend geändert, dass sie mit dem neuen Schema der Fehlermeldungen übereinstimmen. Dieses Feature wurde auch in Angular 5.2.1 implementiert. Im Bereich Bazel können ab Angular 6 dann Regeln dafür erstellt werden, ob das Type Checking von ng_module aktiv ist.

Eine Mischung aus Bugfix und Performance-Verbesserung ist das Hinzufügen des fehlenden <tree>-Wrapper-Elements in den Benchmark des render3_function-Baums. Dadurch arbeitet er mit anderen Performance-Tests besser zusammen, was die Performanz insgesamt verbessern sollte.

Eine Liste mit sämtlichen Änderungen und Bugfixes gibt es wie immer auf GitHub, die Roadmap zu Angular findet sich dort ebenfalls (Link).



Update vom 10. Januar 2018

Angular 5.2 ist da – Fokus auf Bugfixes

Mit Angular 5.1.3 endet der Release Zyklus 5.1.x und wie zu erwarten war, gab es lediglich ein paar weitere Bugfixes für Angular 5.1: Unter anderem werden unendliche Schleifen in Animationen bei der Verwendung von mehreren Sub-@triggers verhindert, hierarchisch höher liegenden Animation geblockt werden.

Ebenfalls im Bereich Animationen wurde das Problem des Closure Compilers mit der Umbenennung von DOMAnimation behoben. Der Compiler benannt alle Eigenschaften eines Programms um, die als „intern“ erkannt werden. Da DOMAnimation allerdings extern ist, wird diese nun per declare interface als solche markiert und vom Compiler nicht mehr umbenannt.

Angular 5.2.0

Neben den bereits unten genannten Features gibt es für den Compiler noch weitere neue Funktionen. Direktiven können nun zum Beispiel einen Ausdruck, der an eine Property ausgegeben wurde, als sogenannten Router Guard nutzen, anstatt den Typ durch eine Type Expression zu filtern. Dadurch kann ngIf einen ngIf-Ausdruck direkt als Guard nutzen, was der eigentlichen Intention besser entspricht und für eine verbesserte Typinferenz sorgt. Die Nutzung dieser Art von Guard ersetzt nun die bisher gültige Nutzung von Guards, die auf Funktionen basieren.

Ansonsten lag der Fokus des ersten Release Candidates von Angular 5.2 und dem fertigen Release auf dem Bugfixing, wobei die Bugfixes von Angular 5.1.3 eins-zu-eins für die RC-Version übernommen wurden (siehe oben). Im finalen Release wurden vier weitere Bugs gefixt, unter anderem werden im Bereich Bazel nun die korrekten Modulnamen für den ES6-Output ausgegeben.

In Sachen Benchpress gibt es eine Vorwärtskompatibilität mit dem selenium_webdriver 3.6.0 und einen Workaround für die Probleme mit Chrome 63. Es kann zuweilen vorkommen, dass Chrome 63 beim ersten Lauf des Events navigationStart dafür sorgt, dass dieses eine andere PID hat, als beim Benchpress-Lauf. Dadurch sind die gesammelten Ergebnisse des ersten Laufs ungültig. Mit dem in Angular 5.2 eingebauten Workaround werden solche Läufe ignoriert.

Weitere Informationen zu den aktuellen Versionen von Angular gibt es wie immer im offiziellen Changelog auf GitHub. Dort findet sich auch der offizielle Release-Plan.




Update vom 3. Januar 2018

Angular 5.2: Betaphase bringt neue Features

Noch vor Weihnachten schnürten die Entwickler von Angular mit den Versionen 5.1.1 und 5.1.2 ein doppeltes Bugfix-Paket für die Nutzer. Im Closure Compiler wird zum Zwecke der Reduzierung des Spams durch Warnmeldungen die Funktion checkTypes nicht mehr auf Code angewandt, den der Compiler emittiert. Auch der Bug, bei dem unformatierte Fehlermeldungen einfach ignoriert wurden, ist mit Angular 5.1.1 Geschichte. Im Bereich Bazel wird moduleName nun auch nicht mehr mit fileName gleichgesetzt.

Bis Angular 5.1.2 hat der Service Worker lediglich bei einem Kaltstart auf Updates geprüft. Da dies zwar häufig vorkommt, aber eben praktisch nicht planbar ist, fällt es Entwicklern schwer, vorherzusehen, wann die Nutzer Updates erhalten. Die DevTools verursachen durch ihre Eigenschaft, den Service Worker unendlich lange ausuzuführen zudem das Problem, dass Updates überhaupt nicht möglich sind. Nun wird bei jeder Nutzung der Navigation (also dem Reload der jeweiligen App) auf Updates geprüft. Das alte Verhalten, also das Updaten beim Restart des Service Workers, bleibt erhalten, um keinen Breaking Change zu produzieren.

Angular 5.2.0-beta.0/1

Die ersten beiden Betaversionen von Angular 5.2 bringen insgesamt sieben neue Features, knapp die Hälfte davon sind für den Compiler. Möchte man das Type Checking in Binding Expressions deaktivieren, kann man nun $any() nutzen. Das Ganze funktioniert ganz genau wie as any in TypeScript und macht Ausdrücke möglich, die zwar zur Laufzeit funktionieren, aber eben keinen Type Check durchführen.

Ein weiteres neues Feature bringt die Option paramsInheritanceStrategy mit sich. Ist diese auf always gestellt, erben Child Routes uneingeschränkt die Parameter ihrer Eltern. Bislang hat der Router lediglich Pfad- und Matrixparameter und Data- bzw. Resolve-Parameter gemergt, wenn die Route einen leeren Pfad hatte oder keine Komponenten enthielt.

Weitere Informationen zu den aktuellen Versionen von Angular gibt es wie immer im offiziellen Changelog auf GitHub. Dort findet sich auch der offizielle Release-Plan.



Update vom 8. Dezember 2017

Angular 5.1, Angular Material 5.0 und viele weitere Neuerungen

Fünf Wochen nach dem Release von Angular 5 steht Angular 5.1 zum Download bereit und bringt ein paar kleinere neue Features mit. Auch Angular CLI hat ein Update spendiert bekommen und liegt nun in Version 1.6 vor. Angular Material und das Angular CDK wurden als Version 5.0.0 versioniert und sind nun erstmalig als stabile Releases verfügbar. Hier hat ein Versionssprung stattgefunden, um die Nummerierung an Angular anzugleichen.

Angular 5.1

Mit dem Release von Angular 5.1 unterstützt das Framework nun, wie bereits abzusehen war, TypeScript 2.5. Die Nutzung der neueren Version ist im Releasezweig 5.x.x jedoch optional, ein Upgrade von der bisher genutzten Version TypeScript 2.4 kann manuell via yarn add typescript@'~2.5.3' oder npm install typescript@'~2.5.3' durchgeführt werden. Die Unterstützung für TypeScript 2.4 bleibt weiterhin für Angular 5.x.x erhalten. Das Update auf TypeScript 2.5 wird laut Release Notes im Angular-Blog allen Entwicklern empfohlen.

Außerdem wurden die Decorator Error Messages überarbeitet. Für nicht unterstützte oder falsche Expressions in Decorators wird nun eine deutlich gekürzte Fehlermeldung ausgegeben.

Auch von Angular CLI ist eine neue Version verfügbar, die Service Worker unterstützt. Mit v1.6 soll es darüber hinaus leichter sein, Angular Universal zu bestehenden Projekten hinzuzufügen. Dazu gibt es nun folgenden Befehl, in den der Name des Projekts eingesetzt wird:

ng generate universal <name>

Angular Material 5.0.0 erschienen

Neu ist außerdem der App-Shell-Support, wodurch die Arbeit mit Application Shells in Angular möglich ist. Wie genau das Vorgehen dabei aussieht, hat Stephen Fluin im Angular-Blog beschrieben. Zu den aktuellen Releases gehört außerdem, dass Angular Material und das Angular CDK (Component Developer Kit) nun den Stable-Release-Status erreicht haben. Angular Material bringt 30 UI-Komponenten mit, die auf dem Material Design von Google beruhen. Das CDK ist dazu gedacht, Entwickler bei der Erstellung eigener Komponenten zu unterstützen. Künftig folgen beide Tools dem Releaseplan und der Versionierung von Angular; neue Major-Versionen von Angular Material, Angular CDK und Angular selbst sollen also zeitgleich erscheinen.

Alle Neuerungen können im Blogpost zum Release von Angular 5.1 nachgelesen werden.



Was bringt Angular 6

Was genau das nächste Major Release bringen wird, ist natürlich noch unklar. Unser Experte Karsten Sitterberg geht allerdings davon aus, dass es wieder einige Verbesserungen in Sachen Performanz geben wird. Anwendungen könnten zudem in der Auslieferung kompakter werden.

Es dürfte allerdings nicht mehr lange dauern, bis dann wirklich die ersten Pläne und Verbesserungen sichtbar werden, denn Angular 6 ist bereits für März oder April 2018 angekündigt und bei Angular 5 gab es ca. drei Monate vor dem Release-Termin die ersten Betaversionen.

Angular 6 wird wohl Angular 4 als nächste LTS-Version (Long-Term Supported) ersetzen, denn der Zyklus von Angular 4 endet im Oktober 2018, gerade rechtzeitig zur geplanten Veröffentlichung von Angular 7.

Angular 5.1

Während die Userbase von Angular auf die ersten Informationen zu Angular 6 wartet, geht die Entwicklung von Angular 5 mit einigen Bugfix Releases und der Finalisierung von Angular 5.1 weiter. Die aktuellste Version von Angular trägt die Nummer 5.0.5, diese stellt das fünfte Bugfix-Update für das Framework dar. Insgesamt wurden seit Erscheinen des letzten Majors 33 Bugs gefixt. Zum Beispiel wurde in Angular 5.0.5 ein Bug gefixt, sodass Anwendungen nicht mehr abstürzen, wenn sie den Service-Worker nicht unterstützen. Seit Angular 5.0.4 wird ein leerer Body als null behandelt, wenn JSON im HttpClient geparst wird. Das XhrBackend versucht das JSON-Parsing ab sofort nur dann, wenn der angesprochene Body nicht leer ist.

Auch Angular 5.1 scheint kein besonders Feature-reiches Update zu werden. Drei Betaversionen und zwei Release Candidates brachten bislang gerade einmal fünf kleinere Neuigkeiten, davon ist eine die mit Angular 5.1.0-beta.1 eingeführte Unterstützung von TypeScript 2.5, die allerdings noch nicht ganz fehlerfrei funktioniert (siehe hier).

Lesen Sie auch: Angular 5 vs. React – Wer hat wo die Nase vorn?

Zu den weiteren neuen Funktionen gehört die Möglichkeit, TestBed.overrideTemplateUsingTestingModule zu verwenden, womit Nutzer nun Templates für JIT- und AOT-Komponenten überschreiben können. Zudem werden neue und bessere Fehlermeldungen in Bezug auf strukturelle Fehler produziert: Bislang waren Fehler, die während der Interpretation des Inhaltes von Directives eher kaum zu gebrauchen. Durch die verbesserten Meldungen kann die Fehlersuche leichter vonstattengehen.

Weitere Informationen zu den aktuellen Versionen von Angular gibt es wie immer im offiziellen Changelog auf >GitHub. Dort findet sich auch der offizielle Release-Plan.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Ann-Cathrin Klose
Ann-Cathrin Klose
Ann-Cathrin Klose hat allgemeine Sprachwissenschaft, Geschichte und Philosophie an der Johannes Gutenberg-Universität Mainz studiert. Bereits seit Februar 2015 arbeitete sie als redaktionelle Assistentin bei Software & Support Media und ist seit Oktober 2017 Redakteurin. Zuvor war sie als freie Autorin tätig, ihre ersten redaktionellen Erfahrungen hat sie bei einer Tageszeitung gesammelt.
Kommentare

Hinterlasse einen Kommentar

2 Kommentare auf "Auf dem Weg zu Angular 6: Finales Release veröffentlicht!"

avatar
400
  Subscribe  
Benachrichtige mich zu:
Aufmerksamer Leser
Gast

Warum ist jaxenter, das ja eigentlich Java als Hauptthema hat, eigentlich so auf Angular fixiert? Warum nicht auf Vue.js oder React? …