Angular 11: News & Features

Auf dem Weg zu Angular 11: Major-Version veröffentlicht – Angular 11 ist da!

Ann-Cathrin Klose

© Shutterstock / Olga Stabredova

Angular 11 ist da. Wie bereits Anfang der Woche angedeutet, hat das Angular-Team den 11.11. genutzt, um Angular 11 zu veröffentlichen. Mit dem Release gibt es ein Update zur Operation Byelog, das Component Test Harness wurde ausgeweitet und das Logging wurde verbessert. Neuigkeiten gibt es auch für die webpack-Integration!

Angular erhält eigentlich zwei Major-Releases pro Jahr. Dieses Jahr sind aber sogar mehr: Nachdem Angular 9 bereits im vergangenen Jahr erscheinen sollte, mit deutlicher Verspätung dann aber doch erst 2020 fertig wurde, und Angular 10 als eher kleines Release nur wenige Monate danach folgte, war im Sommer bereits Angular 11 in Arbeit. Ein Release-Datum für die fertige Major-Version war natürlich lange nicht bekannt. Grundsätzlich versucht das Angular-Team aber, alle sechs Monate eine neue Version zu veröffentlichen. Geht man davon aus, dass Angular 9 im Sommer erschienen ist, und das Ziel nach Angular 9 lautete, wieder in den regulären Takt zu kommen, müsste Angular 11 zum Jahresende fertig werden. Wie v9 aber gezeigt hat, sind Verzögerungen nie auszuschließen. Wie es auf Feature-Ebene weitergehen soll, zeigt die Roadmap. Zu welchem Zeitpunkt beispielsweise ein Arbeiten ohne NgModules möglich sein soll, verrät die Roadmap nicht. Wir haben die Arbeit am Major-Release hier für euch begleitet. Von der ersten Next-Version bis zum Release.

Angular 11: Das finale Release ist da!

Angular 11 ist da. Die neue Version bringt so einige spannende Änderungen am Framework mit. Dazu gehört beispielsweise, dass webpack 5 mit dem Support für Module Federation jetzt experimentell unterstützt wird. Das Upgrade der webpack-Version ist jedoch noch optional, da es selbst zahlreiche Neuerungen mitbringt, die als Breaking Changes gelten. Ein solches Upgrade muss umfassend getestet werden, bevor es an alle Angular-Nutzer ausgerollt wird. Wer wissen möchte, was mit webpack 5 und der Module Federation in Angular alles möglich wird, findet in unserem entwickler.kiosk eine Einführung von Manfred Steyer.

Das optionale Upgrade auf webpack 5 ist aber natürlich nicht die einzige Neuerung am Major Release von Angular. Angular 11 bringt unter anderem auch Neuerungen am Component Test Harness für Angular Material mit, das in Angular 9 eingeführt wurde. Mit dem Tool können nun alle Komponenten getestet werden, die mit Angular Material gestaltet werden, nicht mehr nur einzelne Teile der Anwendung. Für das Reporting und Logging in Angular wurde unter anderem am CLI-Output gearbeitet, der nun besser lesbar ist.

Operation Byelog bezeichnet die Arbeit am Backlog des Frameworks. Auf GitHub hatten sich mit der Zeit jede Menge Issues angesammelt, die in der ersten Phase der Operation Byelog jetzt nach Schweregraden sortiert wurden. In Zukunft sollen neue Issues innerhalb von zwei Wochen nach ihrer Erstellung eingeordnet werden.

Alle Informationen zu diesen und weiteren Neuerungen an Angular 11 hält nicht nur der bekannte Changelog auf GitHub für euch bereit. Mark Techson, Developer Advocate im Angular-Team, hat alle Informationen auch in einem großen Blogpost zum Release für euch zusammengefasst.

Angular 11: Die Release Candidates

Angular 11.0.0-rc.3
Update vom 10. November 2020

Angular 11.0.0-rc.3 bringt nur Bugfixes mit. Der Release Candidate behebt noch einmal einige Probleme am Compiler und Compiler-CLI, an den Elements und im Core. Für i18n wurde beispielsweise der Source-Span für Nachrichten angepasst. Diese Neuerung findet sich im Compiler, da dieser zuletzt für Fehler an der entsprechenden Stelle gesorgt hatte. Für unbekannte Pipes wird in Zukunft keine doppelte Diagnostik im Compiler-CLI mehr durchgeführt. Alle Bugfixes können wie immer im Changelog auf GitHub gefunden werden.

In der RC-Phase einer neuen Major-Version stellt sich aber natürlich auch immer die Frage nach dem finalen Release-Datum. Im entsprechenden Milestone befinden sich derzeit noch sechs offene Pull Requests. Natürlich könnten nun nach der Veröffentlichung des neuen Release Candidates noch Bugs gefunden werden, die das finale Release aufhalten. Auf Twitter findet sich allerdings auch die folgende Nachricht:

Viele Entwickler interpretieren das als Hinweis, dass bereits morgen das finale Release von Angular 11 folgen könnte. Eine offizielle Bestätigung gibt es nicht; auch sollte man die Zeitzonen in Erinnerung behalten. Eine Veröffentlichung am 11.11. wäre für die meisten europäischen Entwickler vermutlich eher mit dem 12.11. gleichzusetzen. Dennoch scheint das Release nicht mehr weit weg zu sein. Vielleicht können wir uns noch in dieser Woche über Angular 11 freuen!


Angular 11.0.0-rc.2
Update vom 5. November 2020

Der dritte Release Candidate für Angular 11 bringt zwei Verbesserungen für die Performance mit. Jenseits davon fokussiert sich v11.0.0-rc.2 aber wieder ganz und gar auf das große Ziel hinter den Release Candidates: Bugs ausbessern! Insgesamt sieben Bugfixes haben es darum in diese Test-Version geschafft, darunter kleinere Anpassungen an der Darstellung von Datenangaben und am Router. Dort wurde ein Fehler behoben, der dazu führte, dass nicht alle Outlets genutzt wurden, wenn Befehle ein Prefix hatten.

Für die Performance hat das Angular-Team an den Bereichen Compiler-CLI und Core gearbeitet. Im Compiler-CLI werden Template Context Declarations in Zukunft nur noch bei Bedarf erzeugt. Am Core erfolgt keine erneute Registrierung bereits bekannter NgModules mehr, wenn diese per ID registriert werden. Stattdessen verwendet Angular nun Informationen über bereits aufgerufene NgModules, sodass diejenigen aussortiert werden können, die auf verschiedenen Pfaden erreichbar sind.

Alle Informationen zu den Neuerungen können dem Changelog auf GitHub entnommen werden.


11.0.0-rc.0 & rc.1
Update vom 30. Oktober 2020

In den vergangenen zwei Wochen hat sich viel getan bei Angular. Nicht nur wurde mit Angular 10.2 eine neue Minor-Version fertiggestellt, auch bei Angular 11 gibt es Neuigkeiten. Die kommende Major-Version hat den Next-Release-Status verlassen und befindet sich in der Release-Candidate-Phase. Im ersten Release Candidate, Angular 11.0.0-rc.0, ging es noch einmal ans Eingemachte: Der Support für TypeScript 3.9 wurde final aus dem Compiler entfernt, da Angular 11 ja nur noch TypeScript 4.0 unterstützt. Auch für platform-server gab es einen Breaking Change im ersten Release Candidate. Wer dort zum Setup mit useAbsoluteUrl arbeitet, muss in Zukunft auch baseUrl spezifizieren. Damit soll unvorhersehbares Verhalten vermieden werden. Die Änderung ist auch in v10.2 als Breaking Change zu einer Minor-Version enthalten, da der aus dem vorherigen Verhalten resultierende Fehler zu Problemen in Produtiv-Umgebungen führen könnte.

11.0.0-rc.1 umfasst hingegen nur Bugfixes, die keine Breaking Changes nach sich ziehen. Die Suche nach Fehlern steht im Zentrum der Release-Candidat-Phase. Einen Überblick über die Neuerungen gibt wie immer der Changelog auf GitHub.


Angular 11: Die Next-Releases

Angular v11.0.0-next.6
Update vom 15. Oktober 2020

Breaking Changes und neue Features: Mit Angular v11.0.0-next.6 hat sich einiges getan. Bei den nun im Core eingeführten Trusted Types handelt es sich um eine Neuerung, die bereits in der Roadmap angekündigt worden war. Trusted Types sind ein Sicherheitsfeature, das XSS-Attacken verhindern soll. Das Trustes-Types-Modul im Angular Core verwendet dafür die Definitionen aus TypeScript, die als Dependency hinzugefügt wurden. Die Details können dem Pull Request auf GitHub entnommen werden.

Als Breaking Changes gelten einige Neuerungen am Router. Für das Property initialNavigation wurden alte Werte entfernt, die bislang noch unterstützt worden waren. Das betrifft legacy_disabled, legacy_enabled, true und false. Die Details zu den Breaking Changes können im Changelog auf GitHub gefunden werden.


Angular v11.0.0-next.5
Update vom 8. Oktober 2020

Mit Angular 11.0.0-next.5 gibt es erneut Änderungen am Framework zu vermelden: Das Update fügt null zu den Types von AbstractFormControl.parent hinzu. Wenn noch kein Check für diesen Type vorhanden ist, wird der TypeScript-Compiler in v11 eine Meldung dazu ausgeben. Für das Update steht eine Migration zur Verfügung, das die entsprechenden Anpassungen vornimmt. Auch in den Forms gibt es eine Neuerung, die als Breaking Change geführt wird und die Types betrifft. Directives im Package @angular/forms hatten bislang den Type any[] für die Argumente von validators und asyncValidators in Konstruktoren. Das wurde nun geändert um die Typensicherheit für diese Fälle zu erhöhen, erfordert aber manuelle Anpassungen. Auch auf Feature-Ebene gab es wieder einige Anpassungen, die im Changelog nachgelesen werden können.


Angular v11.0.0-next.4
Update vom 1. Oktober 2020

Angular 11 wird eine Reihe größerer und kleinerer Änderungen am Framework vornehmen, die als Breaking Changes gelten. Davon finden sich ausgesprochen viele in diesem Test-Release: Unter anderem ist den Release Notes zu entnehmen, dass das Framework künftig keinen integrierten Support für den Internet Explorer 9 und 10 sowie dessen mobile Version mehr umfassen wird. Die Unterstützung für diese Browser-Versionen hatte das Angular-Team bereits in Angular 10 als deprecated markiert; zu v11 wird das nun final umgesetzt. Wer diese IE-Versionen weiterhin in Angular-Projekten unterstützen möchte, muss das also künftig manuell einrichten. Auch andere Deprecations sollen zu Angular 11 in finalen Code-Anpassungen münden. @angular/platform-webworker und @angular/platform-webworker-dynamic sind seit Angular 8 deprecated und werden in v11 nicht mehr enthalten sein. Viele weitere Breaking Changes in Angular v11.0.0-next.4 beziehen sich auf die Arbeit mit Pipes in Angular 11. Betroffen sind davon beispielsweise die slice-Pipe, date-Pipe, und einige andere. Häufig handelt es sich bei den Breaking Changes hier aber nur um kleine Anpassungen, durch die das Verhalten der verschiedenen Pipes konsistenter werden soll. Dazu gehört beispielsweise, dass die slice-Pipe nun null ausgibt, wenn der Eingabewert undefined ist.

Einen Überblick über alle Neuerungen gibt wie immer der Changelog auf GitHub.


Angular v11.0.0-next.3
Update vom 25. September 2020

Das Angular-Team bleibt mit der Arbeit an v11 im angekündigten Rhythmus: Ein neues Next-Release pro Woche gibt Einblick in die Änderungen am Framework und ermöglicht das frühe Testen der neuen Version. Mit Angular 11.0.0-next.3 ist erneut ein Breaking Change eingeführt worden; wichtig zu bedenken ist aber, dass man sich um all diese Breaking Changes noch keine großen Sorgen machen muss. Im Rahmen der Next-Phase wird so manches ausprobiert, nicht alles davon bleibt bis zum finalen Release aber genau so, wie es erstmalig vorgestellt wurde. Selbst wenn das eigene Projekt also von einem der aktuellen Breaking Changes betroffen wäre, heißt das noch nicht, dass diese Änderung zum finalen Release genau so enthalten sein wird. Im Fall von Next.3 betrifft der Breaking Change das Verhalten von TestBed.overrideProvider und verändert hier die Ausgabe von Fehlern. In manchen Fällen wurde bislang keine Fehlermeldung erzeugt, nun aber schon. Wann das zutrifft, kann dem Changelog entnommen werden.

Next.3 führt außerdem eine neue Option für den Service Worker ein: navigationRequestStrategy. Damit kann der Service Worker so konfiguriert werden, dass er immer ein Netzwerk-Request erstellt, wenn ein neues Navigation Request ausgelöst wurde. Einen Überblick über alle Neuerungen auf Feature-Ebene sowie die Bugfixes in der Version gibt wieder der Changelog.


Angular v11.0.0-next.2
Update vom 17. September 2020

Drei Breaking Changes: Angular 11.0.0-next.2 bringt einige Änderungen am Framework mit. Das dritte Next-Release fällt somit deutlich größer aus als die ersten beiden; Sorgen machen müssen sich Entwickler aber nicht. Wie immer handelt es sich nämlich um Breaking Changes, die nicht unbedingt alle betreffen. So wird eine Neuerung für DatePipe als Breaking Change gelistet, die das Rundungsverhalten bei Strings mit Zeitangaben im Millisekunden-Bereich verändert. Statt immer auf die nächtgelegene volle Millisekunde zu runden, wird nun immer abgerundet. Das sollte jedoch nur die wenigsten Anwendungen betreffen, wie dem Changelog zu entnehmen ist. Wer dennoch ein anderes Verhalten benötigt, kann die Zeitangabe vorab verarbeiten lassen und erst danach an DatePipe übergeben.

Ein weiterer Breaking Change für Angular 11, der in Version Next.2 enthalten ist, betrifft den Router. Spezifisch ändert sich das Verhalten beim Aufruf von RouteReuseStrategy#shouldReuseRoute. Die Reihenfolge der zukünftigen und gegenwärtigen Argumente war bisher vertauscht worden. Dieser Fehler wurde korrigiert; wenn Projekte das derzeitige Verhalten voraussetzen, muss dies angepasst werden. Der dritte Breaking Change ist am Locale Data API vorgenommen worden. Arrays sind hier in Zukunft nicht mehr veränderbar, sondern wurden als readonly markiert. Wenn eine Veränderung, z. B. sort() oder push auf dem Array durchgeführt werden soll, muss nun eine Kopie erstellt werden.

Darüber hinaus bringt Next.2 eine Reihe neuer Features am Bereich Compiler-CLI mit und verbessert die Performance. Einen Überblick über alle Neuerungen gibt wie immer der Changelog auf GitHub.


Angular v11.0.0-next.1
Update vom 10. September 2020

Mit der Version next.1 steht bereits der zweite Test-Build von Angular 11 zur Verfügung. Das Release bleibt klein, bringt aber eine wichtige Neuerung mit: Wer mit CollectionChangeRecord arbeitet, muss in Zukunft auf IterableChangeRecord umsteigen. CollectionChangeRecord wurde entfernt und steht somit nicht mehr zur Verfügung. Neben diesem Breaking Change bringt die Next-Version nur einige Bugfixes mit. Darunter ist eine Änderung am Router, der Lazy Loading jetzt auch für Named Outlets unterstützt, wenn diese eine leere Route enthalten. Bislang konnte Lazy Loading in diesem Spezialfall nicht verwendet werden. Weitere Informationen können wie immer dem Changelog auf GitHub entnommen werden.


Angular 11.0.0-next.0
Update vom 3. September 2020

Der erste Next-Build von Angular 11 bringt gleich einen Breaking Change mit, der zu den Angular Forms gehört. Wenn die Klassen-Instanzen von FormControl, FormGroup und FormArray mit Async-Validators gearbeitet haben, die zur Initalisierungszeit definiert werden, wurde ein Status Change Event ausgelöst. Das hat sich nun geändert. In Zukunft wird in diesem Fall ein Status-Event in das statusChanges-Observable übergeben. Auch ein neues Feature gibt es bereits, wie dem Changelog entnommen werden kann.

Angular 10.1: Die Neuerungen

Parallel zum ersten Next-Release von Angular 11 ist auch die erste Minor-Version von Angular 10 erschienen. Das Minor Release bringt eine ganze Reihe von Neuerungen mit. So wurde async beispielsweise zu waitForAsync umbenannt, um deutlicher zu machen, was damit erreicht wird. Für die Performance wurde auch einiges getan, wie dem Changelog entnommen werden kann. Wie viele Minor-Versionen Angular 10 bekommen soll, ist nicht bekannt. Das Angular-Team gibt nur an, dass im Allgemeinen mit einer bis drei Minor Releases pro Major-Version geplant werde.

Geschrieben von
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

avatar
4000
  Subscribe  
Benachrichtige mich zu: