Von Angular 7 zu Angular 8

Auf dem Weg zu Angular 8: 6. Release Candidate mit Features und Breaking Change ausgeliefert

Redaktion JAXenter

© Google / CC BY 4.0

Weiter geht’s bei Angular 8: Der neue Release Candidate, Angular 8.0.0-rc.5, bringt noch einmal einige Neuerungen mit. Darunter sind zwei Features, zwei Deprecations, ein Breaking Change und einige Bugfixes.

Der Releasezyklus von Angular sieht vor, dass alle sechs Monate eine neue Major-Version erscheint. Das klappt mal besser, manchmal aber auch nicht ganz so gut. Bei Angular 7 kam das Release aber pünktlich im Oktober. Somit müsste Angular 8 im April oder Mai 2019 folgen. Bis dahin geht es zuerst weiter mit Minor-Releases von Angular 7 und dann den Beta-Versionen von Angular 8.

Angular 8: Die Release Candidates

Angular 8.0.0-rc.5

Update vom 24. Mai 2019

Ein weiterer Release Candidate für Angular 8 ist verfügbar: Mit Angular 8.0.0-rc.5 tut sich noch einmal einiges am kommenden Major-Release. Zwei neue Features, zwei Deprecations, ein Breaking Change und eine Reihe von Bugfixes sind im Release enthalten. Eins der neuen Features ist relevant für alle, die noch AngularJS-Teile in ihrem Projekt verwenden. Der onUrlChange-Hook bemerkt nun auch URL-Updates, die von AngularJS ausgelöst wurden. Diese Neuerung steht im Kontext der in RC.0 veröffentlichten Neuerungen für die Location Services, die das Upgrade von AngularJS auf Angular 8 erleichtern sollen.

Das zweite der neuen Features für Angular 8 besteht in einer strikteren Typisierung für SlicePipe. Bislang wurden Fehler in ngFor nicht gefunden, da als Type any ausgegeben wurde. Nun wurde die Auswahl zugelassener Types entsprechend eingeschränkt, sodass das TypeChecking mit Ivy wie vorgesehen funktioniert.

Als Deprecated markiert wurden im neuen Release Candidate die Integration mit dem Web Tracing Framework (WTF) sowie platform-webworker. Der Breaking Change @ViewChild– und @ContentChild-Queries, die in Zukunft nicht mehr automatisch durch den Compiler sortiert werden, sondern manuell als statisch oder dynamisch markiert werden müssen. Nicht davon betroffen sind @ViewChildren und @ContentChildren.

Für Bazel sind drei Bugfixes im Release enthalten. Darüber hinaus wurden im Core und im Router Probleme behoben.

Ob Angular 8 wie angekündigt noch im Mai erscheinen wird, ist nicht bekannt. Alle weiteren Informationen zum aktuellen Release Candidate können dem Changelog auf GitHub entnommen werden.



Angular 8.0.0-rc.4

Update vom 17. Mai 2019

Wann kommt Angular 8? Vielleicht erscheint die neue Major-Version noch in diesen Monat – das hatte das Angular-Team zumindest im Februar in Aussicht gestellt. Dafür spricht, dass die RC-Phase bei Angular meist recht kurz bleibt und jetzt bereits Relaase Candidate 5 (Angular 8.0.0-rc.4) zur Verfügung steht. Die Version bringt ein neues Feature für Bazel mit: Ein durch das CI verwendeter Container wurde ausgetauscht, da bislang eine Version implementiert war, die nicht durch das RBE-Team gepflegt wurde. Damit wurde auch der Support für die rbe_autoconfig() Rule hinzugefügt, die automatisch prüft, ob Configs für die verwendete Toolchain im Repository @bazel_toolchains vorliegen oder diese erzeugt, wenn dies nicht der Fall ist.

Darüber hinaus enthält Angular 8.0.0-rc.4 eine Reihe von Bugfixes mit. Auch hier betreffen einige Bazel, das mit Angular 8 als optionales Feature implementiert werden wird. Die meisten Bugfixes entfallen jedoch auf den Code, wo vornehmlich an der Static-Query Migration gearbeitet wurde.

Weitere Informationen zum 5. Release Candidate von Angular 8 können dem Changelog auf GitHub entnommen werden.


Angular 8.0.0-rc.3

Update vom 08. Mai 2019
Fünf Bugfixes bringt der neuste Release Candidate von Angular 8 mit, der nun veröffentlicht wurde. Die Abstände werden also wieder länger. Zwischen Release Candidate 1 und 2 lagen nur wenige Tage, nun war es mehr als eine Woche. Zwei der behobenen Probleme in Angular 8.0.0-rc.3 finden sich im Router, eines in Bazel. Ebenfalls behoben wurden je ein Bug im Compiler-CLI und im Core:

  • bazel: Bump ibazel to 0.10.1 for windows fixes (#30196) (9f68c35)
  • compiler-cli: log ngcc skipping messages as debug instead of info (#30232) (548b003)
  • core: fix interpolate identifier in AOT (#30243) (3fe3a84)
  • router: ensure history.state is set in eager update mode (#30154) (9720227)
  • router: fix a problem with router not responding to back button (#30160) (132f01c)

Weitere Informationen zu den Bugfixes können auf GitHub gefunden werden.


Angular 8.0.0-rc.1 und rc.2

Update vom 30. April 2019

Vier Bugfixes in zwei Updates, die binnen weniger Tage erschienen sind: Das Tempo auf dem Weg zu Angular 8 steigt. Bereits einen Tag nach der Veröffentlichung des ersten Release Candidates für Angular 8 erschien bereits der zweite. Darin enthalten sind zwei Bugfixes für Bazel. Eins davon betrifft die Datei metadata.tsconfig.json, die nun nicht mehr common/upgrade* umfasst. Der Bug, der hier gelöst wurde, trat auf, weil common/upgrade* eine Dependency hat, die nicht in package.json enthalten ist. Das zweite Bugfix besteht in einem Update der peerDep Ranges.

Der dritte Release Candidate von Angular 8, v 8.0.0-rc.2, folgte drei Tage später. Diese Version bringt ebenfalls zwei Bugfixes mit. Im Bereich des Language Service wurde tsserverlibrary aus den Rollup Globals entfernt, da das Symbol nur im Kontext von Types verwendet werden soll. Außerdem dabei ist ein Bugfix, das Probleme mit Ivy beim Update vermeiden soll: Die Injectable Pipe Migration wurde deaktiviert. Bislang stehe noch nicht fest, ob dieser Mechanismus zu Ivy passe; ein detaillierter Plan für das Upgrade soll folgen.

Weitere Informationen zu den Release Candidates können dem Changelog auf GitHub entnommen werden.



Angular 8.0.0-rc.0

Update vom 26. April 2019

Mit Angular 8.0.0-rc.0 steht der erste Release Candidate für die kommende Major-Version bereit. Damit bleibt das Angular-Team im Zeitrahmen, der im Februar vorgestellt wurde. Das finale Release könnte also schon in einem Monat veröffentlicht werden. Der Release Candidate bringt aber noch einmal zahlreiche Neuerungen mit, darunter ein Breaking Change und eine ganze Reihe von neuen Features. Eins davon folgt unmittelbar aus dem letzten Beta-Release: Wie angekündigt wurde nun auch der als deprecated markierte DOCUMENT Token aus dem Bereich Platform-Browser entfernt.

Gleich sieben der neuen Features gehören zum neu eingeführten API für Location Services, das abwärtskompatibel zu AngularJS, also Version 1, ist. Das API soll die Migration für Projekte erleichtern, die diese Version noch verwenden. Zu den Funktionen, die dafür hinzugefügt wurden, gehört der Abruf des Werts von history.state ohne Verwendung des Routers oder des DOM. So sollen nun Location Transition Events für AngularJS-Anwendungen ausgeführt werden können. Bislang gab es in Angular keine Option zur vollständigen Ausgabe von URLs inklusive Hostname, Port und weiteren Informationen. Das neue API ändert das aber und will so den Nachbar von URLs erleichtern. Auch Konflikte zwischen AngularJS und Angular, die aus verschiedenen Vorgehensweisen der Versionen bei der URL-Kontrolle entstanden sind, wurden nun behoben. Dazu umfasst das neue API eine Alternative zu $location: Mit dem neuen LocationUpgradeProvider werden Lese- und Schreibzugriffe auf URLs zentral von Angular verarbeitet. AngularJS befindet sich noch bis Juli 2021 in der LTS-Phase. Weitere Minor-Releases sind nicht mehr geplant. Releasezweig 1.2.x erhält nur noch Updates für schwerwiegende Sicherheitslücken; v1.7.x erhält Patches für Sicherheitslücken sowie im Fall von Änderungen an den wichtigsten Browsern oder an jQuery, die dazu führen, dass AngularJS-Anwendungen nicht mehr funktionieren. Im Sommer 2021 endet die Support-Zeit von Angular 1.x.

Der erste Release Candidate für Angular 8 umfasst außerdem drei neue Features für den Angular Service-Worker. Entwickler können nun konfigurieren, wann Service Worker registriert werden sollen, da die Registrierung in manchen Fällen nicht automatisch gestartet wird. Dazu wurde SwRegistrationOptions hinzugefügt. Das dritte neue Feature für die Service-Worker erlaubt es, diese in Requests explizit zu übergehen.

Auch für Compiler, Core und Router steht jeweils ein neues Feature bereit:

  • compiler: support skipping leading trivia in template source-maps (#30095) (304a12f)
  • core: add missing ARIA attributes to html sanitizer (#29685) (909557d), closes #26815
  • router: deprecate loadChildren:string (#30073) (c61df39)

Der Breaking Change im ersten Release Candidate von Angular 8 betrifft Bazel. ng_modules setzt in Bazel nun voraus, dass mindestens build_bazel_rules_nodejs 0.27.12 als Dependency vorhanden ist.

Außerdem bringt der erste Release Candidate zahlreiche Bugfixes mit, die im Changelog nachgelesen werden können.



Angular 8: Die Beta-Releases

Angular 8.0.0-beta.14

Update vom 24. April 2019

In Angular 8.0.0-beta.14 hat die kommende Major-Version erneut drei Features bekommen, die dieses mal zum Compiler-CLI und Core gehören. Für den Core handelt es sich dabei um ein neues Schematics, das den als deprecated markierten DOCUMENT Import zu übernimmt. Damit könne im nächsten Schritt auch das entsprechende DOCUMENT Token aus dem Bereich Platform-Browser final entfernt werden, wie dem Pull Request zu entnehmen ist. Im Bereich des Compiler-CLI ist nun ein Export für Tooling Definitions verfügbar. Außerdem wurde im gleichen Bereich am Lowering für exportierte Expressions gearbeitet.

Unter den sieben Bugfixes sind erneut zwei für Bazel zu finden. So wurde hier das Typechecking für Core Schematics Files deaktiviert und das Verhalten von ng build --prod an den Default-Status von ng build angeglichen. Weitere Informationen zu Angular 8.0.0-beta.14 können dem Changelog auf GitHub entnommen werden. Für April wurde außerdem der Übergang in die RC-Phase angekündigt. Bereits im Mai solle das finale Release folgen, wie im Februar mitgeteilt worden war.

Im Angular-Blog finden sich außerdem detaillierte Informationen zum überarbeiteten Architect API für das Angular CLI, das mit Angular 8 als stabiles, offizielles Feature im Framework enthalten sein wird. Das Architect API an sich ist nicht neu; bislang handelte es sich jedoch nicht um einen offiziellen Teil von Angular. In seiner neuen Form arbeitet das API mit sogenannten Builders, die genutzt werden können, um Aufgaben zu planen und ausführen zu lassen.



Angular 8.0.0-beta.13

Update vom 23. April 2019

Zwischen Beta 11 und Beta 12 für Angular 8 lagen zehn Tage, zwischen Beta 12 und 13 waren es hingegen nur drei: Kurz nach der letzten Veröffentlichung steht bereits Angular 8.0.0-beta.13 zum Download bereit. Das Beta-Release umfasst drei Bugfixes, die im Changelog aufgelistet wurden. Eines davon betrifft erneut Bazel. Hier wurde ein Fehler im Kontext von ng add behoben: Packages werden nun auch nach einem unabhängigen Aufruf von ng add installiert. Für das Compiler-CLI gab es einen Bugfix , das den Support von TypeScript 3.4 verbessert. Der Config Path wird nun auch an ts.parseJsonConfigFileContent weitergegeben, was für den neuen inkrementellen Build-Modus von TypeScript notwendig ist. Der dritte Bugfix betrifft den Router. loadChildren-Typings können mit Beta 13 auch mit non-NgFactory Promises genutzt werden. Darüber hinaus bringt Angular 8.0.0-beta.13 aber keine Neuerungen mit.



Angular 8.0.0-beta.12

Update vom 15. April 2019

Eine weitere Beta für Angular 8 ist erschienen: In Angular 8.0.0-beta.12 ist ein neues Feature hinzugekommen und eins auf der Liste der Deprecations gelandet. Das hinzugekommene gehört erneut zu Bazel: Der Builder hat ein Update bekommen, sodass Bazel nun das neue Architect API nutzt und kompatibel mit dem neusten CLI ist. Die Deprecation betrifft die Signaturen von TestBed.get(). Hier wurden bisher eine typisierte Version und eine Version unterstützt, die any akzeptiert und ausgibt. Mit der neusten Beta ist die any-Signatur nun als deprecated markiert, sodass TestBed.get() nur noch mit dem typisierten API genutzt werden soll.

Darüber hinaus bringt die Beta eine Reihe von Bugfixes mit. Einige davon betreffen Bazel, wo beispielsweise karma-jasmine aus ts_web_test_suite entfernt wurde. Weitere Informationen zu den Neuerungen an Angular 8.0.0-beta.12 können dem Changelog auf GitHub entnommen werden.



Angular 8.0.0-beta.11

4. April 2019

Mit Angular 8.0.0-beta.11 steht die nächste Beta für das kommende Major-Release von Angular bereit. Wie bereits im Februar angekündigt wurde, soll Angular 8 noch in diesem Monat in die Release-Candidate-Phase übergehen. Vorerst gibt es jedoch noch neue Features und Breaking Changes an der Version. Neu dabei in der nun veröffentlichten Beta 11 sind vier Features, von denen eins im Rahmen der RC-Phase wieder entfallen könnte, falls es die Migration zu sehr erschweren sollte. Die Änderung betrifft @angular/http, das in v8 insgesamt versteckt werden soll um bestimmte Arbeitsschritte am Package überspringen zu können. Dazu wurde das Package nun aus @angular/platform-server entfernt.

Ein weiteres Feature im neuen Beta-Release betrifft das Logging. Es ist nun möglich, überflüssige Log-Messages mit dem CLI oder per Plug-in zu filtern und eine Konfiguration für die Ausgabe der Messages anzulegen. Für den Core steht nun außerdem ein „AbstractType“-Interface zur Verfügung, mit dem Types erzeugt werden, die für Klassen in get()-Funktionen von Injectors und TestBed genutzt werden. Bislang wurde jedoch nur das Interface implementiert und der entsprechende Type wird nicht verwendet, sodass es sich nicht um einen Breaking Change handle, wie dem Pull Request zu entnehmen ist. Das vierte und letzte neue Feature ist ein neues Update Schematic, das als „template-var-assignment“ bezeichnet wird. Das Schematic soll eine Warnung ausgeben, wenn Template-Variablen zu Werten zugewiesen werden.

Auch für Bazel gibt es erneut eine Änderung. Dabei handelt es sich um den Breaking Change für alle Nutzer, die bereits mit dem experimentellen Feature arbeiten. Da @bazel/typescript nun eine Peer-Dependency von @angular/bazel ist, muss es zu package.json hinzugefügt werden.

Weitere Informationen zu diesen Neuerungen und den Bugfixes im Release können dem Changelog auf GitHub entnommen werden.



Angular 8.0.0-beta.10

Update vom 27. März 2019

Angular 8.0.0-beta.10, also die 11. Beta für Angular 8, bringt zwei neue Features und sechs Bugfixes mit. Wieder geht es um Bazel: Ein Feature und zwei Bugfixes entfallen auf die noch als experimentell markierte Integration des Build-Systems. Das neue Feature für Bazel besteht aus einem Upgrade: Sowohl rules_nodejs als auch rules_sass wurden aktualisiert. Das erste Bugfix für Bazel behebt einen Fehler, der im Zusammenhang mit der Nutzung von ng_module auftrat. Hier können nun auch externe Symbol Factory Reports erstellt werden. Das zweite Bugfix für Bazel stellt einen Workaround für ein Problem dar, das im Kontext des Lesens von Summary-Dateien aus node_modules auftrat.

Neben diesen Neuerungen für Bazel bringt das Beta-Release auch ein Feature für den Service-Worker mit, mit dem es nun möglich ist, mehrere Apps unter der selben Domain zu betreiben. Bislang stürzte der Service-Worker ab, wenn mehrere Apps unter einer Domain lagen und zwischen diesen gewechselt werden sollte. Dies wurde zurückgeführt auf die Nutzung einer gemeinsamen Cache-Datei für alle Apps unter der Domain. Mit dem nun implementierten Feature wird ein ngsw-String an den Basislink der Apps angehängt, wodurch jede App mit einer eigenen Cache-Datei arbeitet.

Weitere Bugfixes in Angular 8.0.0-beta.10 betreffen den Compiler, den Core und den Router. Informationen zu diesen und den bereits genannten Neuerungen an der 11. Beta für Angular 8 können dem Changelog auf GitHub entnommen werden.



Angular 8.0.0-beta.9

Update vom 20. März 2019

Mit Angular 8.0.0-beta.9 hat das Framework ein Upgrade für TypeScript erhalten. Angular 8 wird TypeScript 3.3 voraussetzen, die vorherigen Versionen der JavaScript-Variante werden nicht mehr unterstützt. Diese Neuerung stellt einen Breaking Change dar.

Ein weiterer Breaking Change aus diesem Update betrifft den HTML-Parser. Bislang wurden <tr> und <col> automatisch um das entsprechende Eltern-Element ergänzt, wenn dies fehlte. Diese Autokorrektur wurde mit der nun veröffentlichten Beta entfernt. Das Angular-Team benennt zwei Gründe hierfür: Das Verhalten des Parsers sei bislang zum einen undurchsichtig und willkürlich gewesen, da die gleichen Korrekturregeln auch auf andere HTML-Elemente hätten zutreffen müssen. Zum anderen sei das Wrapping der HTML-Elemente in einigen Ausnahmefällen nicht nötig, sodass hier Fehler durch das Verhalten des Parsers entstehen konnten. Darum soll es in Zukunft keine Auto-Vervollständigung für Eltern-Elemente von <tr> und <col> mehr in Angular geben.

Neben dem Upgrade für TypeScript und der Verhaltensänderung am HTML-Parser bringt Beta 9 für Angular 8 eine Reihe von Bugfixes mit. Hier steht Bazel erneut im Zentrum der Beta, die insgesamt neun Bugfixes umfasst. Darunter sind sechs für Bazel. So wurde beispielsweise @angular/upgrade aus den Dev-Dependencies von Bazel entfernt, da es dort nicht benötigt wird, und das Angular Schematics für Bazel hat ein Update erhalten und unterstützt jetzt das neue Projektlayout für e2e-Projekte.

Weitere Informationen zu Angular 8.0.0-beta.9 können dem Changelog auf GitHub entnommen werden.


Angular 8.0.0-beta.8

Update vom 14. März 2019

In der Beta 8 wurden drei Bugfixes vorgenommen:

  • bazel: Ein fehlender Binary Path für api-extractor wurde hinzugefügt (#29202) (df354d1)
  • bazel: ng build sollte ein prod bundle produzieren (#29136) (14ce8a9)
  • compiler: Es wird vor einer Ausgabe geprüft, ob ein Template aktualisiert wurde (#29041) (c7e4931)

Zudem hat das Angular-Team zwei neue Features für die Bazel-Komponente umgesetzt. Zum einen ist das Kommandozeilenflag ng build –leaveBazelFilesOnDisk hinzugekommen. Zum anderen wurde der Bazel Builder dahingehend modifiziert, dass vor einem Bazel-Aufruf die Bazel WORKSPACE und BUILD.bazel-Dateien auf das Root-Verzeichnis eines Projektes kopiert werden. Dadurch sollen sich Bazel Files vor den Usern verstecken lassen.

Details zu den Änderungen finden sich in den Release Notes.


Angular 8.0.0-beta.7

Update vom 7. März 2019

Weiter geht’s im Beta-Programm für Angular 8: Die Sieben ist da! Neun Bugfixes und zwei Feature-Tickets wurden in dem Release bearbeitet. Zu den Highlights gehört ein neues Update-Schema für das Package @angular/core, das ViewChild– und ContentChild-Queries automatisch auf die neue explizite Timing-Syntax migriert. Dieses Schema wird vor allem in Zusammenhang mit dem neuen Ivy-Renderer relevant, der in Angular 8 als Opt-In-Preview enthalten sein soll. In Ivy sind Queries per Default dynamisch, sodass die Angabe eines expliziten Query-Timings schon jetzt die Migration erleichtert. Geplant ist ein vollständiges Release von Ivy in Angular 9.

Neu in Angular 8 Beta 7 ist auch der JSON-Schema-Support für die Service-Worker-Konfiguration. In Bezug auf Service Worker wurde auch ein kritischer Bug behoben: Wenn eine App-Version dieselben Dateien wie eine ältere Version enthielt, wurde sie vom Service Worker nicht als die neueste Version erkannt. Dementsprechend wurden die Clients nicht aktualisiert. Deshalb wurde in ngsw.json ein neues timestamp-Feld eingeführt, mit dessen Hilfe jeder Build einzigartig wird.

Die vollständige Liste der Änderungen in 8.0.0-beta.7  kann den Release Notes entnommen werden.


Angular 8.0.0-beta.6

Update vom 27. Februar 2019

Erneut wurde eine Beta-Version von Angular 8 veröffentlicht. Mit Angular 8.0.0-beta.6 steht ein neues Feature zum testen bereit, außerdem gab es ein paar Bugfixes an verschiedenen Bereichen des Frameworks. Sowohl das neue Feature als auch zwei der Bugfixes gehören zur aktuell noch experimentellen Integration von Bazel. Bazel hat für ng_module nun Support für die erweiterten Funktionen von ts_config erhalten. Dem entsprechenden Pull Request ist zu entnehmen, dass damit unter anderem der Support von Material2 in Bazel vorbereitet werden soll. Eines der beiden Bugfixes für Bazel bezieht sich auf den Browser-Support. Hier sind für das Bazel Schematics nun Pin-Versionen für Chrome, ChromeDriver, Firefox und GeckoDriver implementiert worden. Das sei jedoch nur eine temporäre Lösung. Außerdem wurde ein Bug gefixed, der bei der RxJS-Implementierung auftrat: rxjs_umd_modules wird nun auch erzeugt, wenn keine Sass-Dateien genutzt werden.

Bugfixes bringt Angular 8.0.0-beta.6 außerdem für den Core, den Compiler und die Language Services mit. Weitere Informationen sind im Changelog auf GitHub zu finden.

Im April soll ein Release Candidate von Angular 8 erscheinen. Somit geht die Arbeit an der neuen Version des Frameworks langsam in den Endspurt über. Das zeigt auch der Blick auf CLI, Schematics und Angular Devkit: Auch hier wird an v8.0.0 gearbeitet. Derzeit steht im entsprechenden GitHub-Repository die 3. Beta von Version 8.0.0 für das das Package Angular CLI bereit.



Angular 8.0.0-beta.5

Update vom 21. Februar 2019

Die neuste Beta-Version von Angular Angular 8, Beta 6, bringt vier neue Features mit. Unter der Versionsnummer Angular 8.0.0-beta.5 wurde unter anderem ein Update für die Dependency Domino auf Version 2.1.2 vorgenommen. Im Compiler-CLI ging es außerdem mit der Arbeit am Ivy Renderer weiter, der ja zu Angular 8 als Preview-Version implementiert werden soll. Wenn enableIvy auf true gesetzt wird, wurde bislang ein Hybrid-Modus mit ngc und ngtsc gestartet. Mit dem aktuellsten Release ändert sich das. Der Standard liegt nun auf ngtsc, das als Alias für true Anwendung findet. Der Hybrid-Modus ist somit nicht mehr vorhanden. Im Core gab es eine Änderung an den Queries ViewChild und ContentChild. Hier können Entwickler nun selbst definieren, wann die Queries aufgelöst werden. Zuvor fand die Auflösung in Abhängigkeit vom Ergebnis zu unterschiedlichen Zeitpunkten statt. Im Router ist es mit dem neusten Release möglich, Hash-basierte Navigationen über setUpLocationSync zu synchronisieren.

Außerdem bringt Angular 8.0.0-beta.5 drei Bugfixes mit. Weitere Informationen zum Release können wir immer dem Changelog auf GitHub entnommen werden.


Angular 8.0.0-beta.4

Update vom 18. Februar 2019

Die fünfte Beta für Angular 8 ist da. Mit dem als Version 8.0.0-beta.4 bezeichneten Release wurden erneut einige Features in Angular 8 implementiert und zahlreiche Bugfixes vorgenommen. Unter den Bugfixes ist ein behobenes Problem mit der Installation von Angular im Bazel-Workspace. Die Installation schlug zuvor aufgrund eines Bugs fehl, der durch die Abfrage der Versionsnummer ausgelöst wurde. Der aktuelle Bugfix stellt eine temporäre Lösung dar, die entfällt, sobald die Abfrage der Versionsnummer nicht mehr nötig ist. Bazel selbst ist noch als experimentelles Feature markiert.

Zu den neuen Features in Angular 8.0.0-beta.4 gehört, dass in Chrome für Benchpress Tests nun ein vollständiges Logfile der Performance-Daten erstellt werden kann. Die Daten werden in einer JSON-Datei abgelegt, sodass Entwickler ein genaueres Bild von der Ressourcennutzung in Chrome während der Testausführung erhalten. Auch neu ist, dass der dts Bundler in Bazel nun als Action in ng_module verfügbar ist. Die weiteren drei neuen Features finden sich im Compiler und Compiler-CLI. Der Angular-Compiler unterstützt nun das Tokenizing von escapeden Strings und Sub-Sektionen von Input-Strings. Im Compiler-CLI werden Symbole nun nicht mehr automatisch Re-Exportiert. Das Feature ist aber weiterhin optional verfügbar.

Weitere Informationen zu den neuen Features und weiteren Bugfixes im Release können wie immer dem Changelog auf GitHub entnommen werden.

In der vorletzten Woche stellte Stephen Fluin außerdem die weiteren Pläne des Angular-Teams in Sachen Ivy vor. In den letzten Beta-Releases von Angular 8 war Ivy nicht unter den im Changelog genannten Features vertreten; fertiggestellt scheint der neue Renderer aber auch nicht zu sein. Zu Angular 8 ist geplant, so teilte Fluin mit, Ivy als Preview zu implementieren. Mit einem Release Candidate sei im April zu rechen. Weitere Informationen zur nun bekannt gegebenen Timeline für das Release von Ivy haben wir hier für euch zusammengefasst.


Angular 8.0.0-beta.3

Update vom 06. Februar 2019

Angular 8.0.0-beta.3 wurde veröffentlicht. Die neuste Beta für Angular 8 hat erneut eine Änderung erhalten, die die Performance von Angular verbessern soll. Dieses Mal wurde an der Dateigröße von PNG-Dateien gearbeitet. Unter Verwendung von pngcrush wurden alle PNG-Dateien komprimiert. Neben dieser kleinen Neuerung wurden fünf Bugfixes implementiert. Das betrifft erneut den Bereich, der schon in den vorherigen Releases im Fokus stand: Zwei der Bugfixes gehören zum experimentellen Feature Bazel. Der Bazel Builder kann nun require.resolve() auflösen, außerdem wurde ein Problem mit den Integration Tests für das Bazel-Schematics behoben. Zwei weitere Bugfixes betreffen den Bereich Compiler-CLI, wo synthetische Dateipfade nun anhand des Input-Filepaths erstellt werden. Außerdem wird im Kontext der Diagnostics jetzt die Compiler-Option newLine beachtet. Das letzte Bugfix findet sich im Core. Dort wurde createInjector() aus dem Public API entfernt.

Weitere Informationen zu Angular Angular 8.0.0-beta.3 können im Changelog auf GitHub gefunden werden.


Angular 8.0.0-beta.2

Update vom 31. Januar 2019

Zwei Bugfixes, ein neues Feature und eine Performance-Verbesserung: Das bringt die dritte Beta von Angular 8 mit. Das neue Feature ist erneut im Compiler zu finden, betrifft laut Pull Request aber auch Bazel: ngtsc kann nun unter tsc_wrapped verwendet werden. Auch darüber hinaus ist es nun möglich, ngtsc in bereits bestehende TypeScript Compilation Binaries einzubinden.

Bazel hat außerdem ein Bugfix erhalten, wie dem Changelog zu entnehmen ist: „also pass afterDeclarations transformers to emitWithTsickle (#28342) (70e426b)“. Für die Forms wurde ebenfalls ein Bugfix implementiert.

Die als Verbesserung an der Performance bezeichnete Neuerung an Angular 8.0.0-beta.2 befindet sich im Core. Hier wurde daran gearbeitet, die typeof-Checks konsistenter zu gestalten. Weitere Informationen können wie immer dem Changelog auf GitHub entnommen werden.


Angular 8.0.0-beta.1

Update vom 23. Januar 2019

Angular 8.0.0-beta.1 ist da. Damit ist bereits die zweite Beta für Angular 8 erschienen. Erneut wurde am experimentellen Feature Bazel gearbeitet, das nun SASS unterstützt. Neben diesem neuen Feature wurde an Bazel außerdem ein Bug behoben, der zu Problemen bei großen Modulen führte. Das Speicherlimit für Node.js für die die ng_module-Rule wurde erhöht, sodass es hier nicht mehr zu Out-Of-Memory-Meldungen kommen sollte.

Die zweite Beta-Version von Angular 8 bringt außerdem zwei weitere neue Features mit. Eins davon betrifft den Compiler. Dort werden eingegebene SASS/LESS-Dateien nun automatisch in .css umgewandelt, da die Reference zur Compile-Time und zur Design-Time gleich sein muss. Dies betrifft natürlich auch das bereits genannte neue Feature für Bazel. Im Bereich der Forms wurde markAllAsTouched() zu AbstractControl hinzugefügt.

Zu den Neuerungen an Angular 8.0.0-beta.1 gehört daneben auch eine zurückgenommene Änderung an Angular. Für Build-Prozesse in Docker sollte ein Image-basierter Cache in Windows BuildKite verwendet werden. Dies führte jedoch zu Abstürzen und der Fehlermeldungen, sodass die Änderung zurückgezogen wurde. Das Problem wurde an die Entwickler von Docker weitergeleitet.

Weitere Informationen zu Angular 8.0.0-beta.1 können dem Changelog auf GitHub entnommen werden.


Angular 8.0.0-beta.0

Update vom 18. Januar 2019

Die Arbeit an Angular 8 hat begonnen, das erste Ergebnis kann getestet werden. Mit Angular 8.0.0-beta.0 steht die erste Beta-Version des Frameworks bereit, die vor allem auf Bazel fokussiert ist. Zwölf von 13 Bugfixes im Release nehmen Änderungen an Bazel vor, das selbst noch als experimentelles Feature markiert ist. Darunter sind beispielsweise de Eintrag von /bazel-out in .gitignore und der Eintrag der Dependency ibazel für Bazel-Projekte.

Das neue Feature in der ersten Beta von Angular 8 bezieht sich auf Angular Forms:

forms: export NumberValueAccessor & RangeValueAccessor directives (#27743) (ac15717)

Zur Verbesserung der Performance wurde am Verhalten von ServerRendererFactory2 gearbeitet. Bisher wurde hier für jedes Request eine neue Instanz von DomElementSchemaRegistry erstellt. Nun wird stattdessen eine geteilte Instanz verwendet.

Weitere Informationen zu Angular 8.0.0-beta.0 können dem Changelog auf GitHub entnommen werden.


Angular 7.x: Die Minor-Releases

Angular 7.2.0 veröffentlicht

Update vom 8. Januar 2019

Nach nur einem Release Candidate steht Angular 7.2 final zum Download bereit. Die neue Minor-Version von Angular 7 bringt vier Bugfixes mit, wovon zwei das Nesting vom Komponenten betreffen. Hier geht es um das Verhalten von ngUpgradeLite im Kontext von downgradeModule(). Komponenten werden nach dem Downgrading nun korrekt verarbeitet, außerdem ist es mit Angular 7.2 möglich, Komponenten aus verschiedenen downgegradeten Modulen zu nesten. Im aktuellen Release wurde außerdem ein Bug in Bazel behoben, der die Verwendung von Protractor unter Windows mit der Protractor Rule betrifft. Es ist jetzt wieder möglich, Protractor Tests zu starten. Der letzte Bugfix betrifft ein nun aufgelöstes API-Mismatch von getError und hasErrorim Bereich der Forms.

Weitere Informationen zum Release können über das Changelog auf GitHub aufgerufen werden.

Update zur Version (16. Januar 2019): Nach der Veröffentlichung von Angular 7.2 wurden das Changelog der Version noch einmal erweitert. Das Release umfasst nicht nur die vier vorgenannten Bugfixes, wie ursprünglich gemeldet, sondern natürlich auch alle Neuerungen, die mit den Versionen Angular 7.1.1 bis 7.1.4 veröffentlicht wurden. Außerdem benennt das Changelog nun eine Reihe von Features, die mit Angular 7.2 veröffentlicht wurden. Für das selbst noch als experimentell markierte Feature Bazel steht nun Schematics-Support via ng-new zur Verfügung. Außerdem bringt Angular 7.2 Support für TypeScript 3.2 und einige kleinere neue Features für den Router mit. Alle weiteren Informationen dazu sind im Changelog zu finden.

 


Angular 7.2.0-rc.0

Update vom 19. Dezember 2018

Die Betas sind durch, es folgen die Release-Kandidaten. Angular 7.2.0-rc.0 heißt der erste auf dem Weg zur finalen 7.2-Version. 12 Bugfixes wurden erledigt, 2 neue Features sind hinzugekommen.

Heraus sticht der Support für TypeScript 3.2. Damit stehen etwa die strengeren Typechecks für bind, call und apply auch in Angular zur Verfügung. Neu ist zudem ein Predicate Function Mode für runGuardsAndResolvers. In diesem Modus ignorieren Guards und Resolvers Veränderungen, wenn eine Predicate-Funktion false zurückgibt. Damit sind Use Cases möglich, in denen eine Anwendung gewisse Parameter-Updates ignorieren muss, andere aber nicht.

Mit dem Eintritt in die RC-Phase rückt die 7.2-Version in unmittelbare Nähe. Wieviele Release-Kandidaten uns bis dahin noch beschwert werden, ist allerdings noch nicht abzusehen.


Angular 7.2.0-beta.2

Update vom 13. Dezember 2018

Nicht mal eine Woche haben die Angular-Entwickler für das nächste Beta-Release gebraucht. Allerdings sind auch lediglich vier Fixes umgesetzt worden. Drei davon betreffen die Bazel-Komponente. So hatte das Upgrade auf die neue ts_library Fehler in schematics/bazel-workspace-Dateien offenbart. Diese sind nun behoben. Eingeführt wurde zudem eine neue Art zu überprüfen, ob die npm-Version von @angular/bazel dieselbe ist, wie die von Bazel im Angular Repository installierte.

Insgesamt sind die folgenden Fixes in Angular 7.2 Beta 2 zu finden:

  • bazel: fix TS errors in the schematics/bazel-workspace files (#27600) (3290fc3)
  • bazel: Read latest versions from latest-versions.ts & use semver check (#27526) (30a3b49)
  • bazel: tsickle dependency not working with typescript 3.1.x (#27402) (f034114)
  • forms: typed argument for FormBuilder group (#26985) (b0c7561)

Angular 7.2.0-beta.1

Update vom 7. Dezember 2018

Nach der kleinen ersten Beta für Angular 7.2 fällt die zweite nun umso größer aus: Mit zahlreichen Bugfixes, einigen Features und sogar einem Breaking Change steht das neuste Beta-Release von Angular zum Download bereit. Das Thema der neuen Version ist offensichtlich: Es geht um Bazel. Bazel ist ein Build- und Test-Tool, das unabhängig von Angular entwickelt wird. Das Angular-Team arbeitet seit einer Weile daran, das Tool fest in Angular zu integrieren und somit leicht für Angular-Anwender verfügbar zu machen. Einen wichtigen Schritt in diese Richtung ist das Angular-Team mit dem Release nun gegangen: Das offizielle Angular Schmeatics für Bazel wurde implementiert, mit dem Bazel über das ng-new-Kommando im CLI zu einem Projekt hinzugefügt werden kann.

Auch der Breaking Change, der mit der zweiten Beta von Angular 7.2 ausgeliefert wurde, betrifft Bazel: Transitive Dependencies von build_bazel_rules_nodejs und build_bazel_rules_typescript werden künftig nicht mehr automatisch via rules_angular_dependencies() installiert. Stattdessen müssen sie manuell über das Workspace-File installiert werden:

load("@build_bazel_rules_typescript//:package.bzl", "rules_typescript_dependencies")
rules_typescript_dependencies()

load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies")
rules_nodejs_dependencies()

Neben den Neuerungen für Bazel bringt das Release außerdem fünf neue Features für den Router mit. Für die Navigation kann nun der Type history.state genutzt werden, auch kann der state nun an routerLink Directives und NavigationExtras weitergegeben werden. Für runGuardsAndResolvers ist nun ein pathParamsOrQueryParamsChange-Modus verfügbar. Das letzte neue Feature bezieht sich erneut auf die Navigation und betrifft den Aufruf von Objekten, wenn zurück navigiert wird. Weitere Informationen zum Release können wie immer dem Changelog auf GitHub entnommen werden.


Angular 7.2.0-beta.0

Update vom 29. November 2018

Die erste Beta-Version von Angular 7.2 hat zwei Bugfixes mitgebracht. Bei Netzwerkfehlern wird nun die Request-URL mit ausgegeben. Außerdem gab es eine Neuerung mit Bezug zu Ivy: Die Abhängigkeit der Auflösung von vorwärts gerichteten Referenzen von der Runtime wurde aufgelöst.

Und wie sieht es beim Ivy Renderer selbst aus? Hier hat sich seit dem Release von Angular 7.1 nicht viel getan. Die zehn noch offenen Features, die zu Angular 7.1 noch bearbeitet werden mussten, sind noch immer nicht abgeschlossen.

Angular im Videotutorial

Im entwickler.tutorial Enterprise-Architekturen mit Angular erklärt Manfred Steyer, Google Developer Expert, wie sich mit Angular große und wartbare Geschäftsanwendungen entwickeln lassen.

Geschrieben von
Kommentare

Hinterlasse einen Kommentar

1 Kommentar auf "Auf dem Weg zu Angular 8: 6. Release Candidate mit Features und Breaking Change ausgeliefert"

avatar
4000
  Subscribe  
Benachrichtige mich zu:
Entwickler
Gast

Für einen langfristigen Frameworkeinsatz ist Angular völlig unbrauchbar. Für mich als Entwickler steht nach einer Einarbeitungsphase in ein Framework die Fachlichkeit im Mittelpunkt. Breaking Changes sind da extrem kontraproduktiv nach einer Aktualisierung auf eine neue Version.