Angular 5.0.0 Final Release “Pentagonal Donut” disponibile per il download su GitHub!

E’ stata dura, ma ce l’hanno fatta: dopo nove release candidate che si sono succedute in poco meno di un mese e mezzo, la Final Release di Angular 5.0.0, nota da oggi come Pentagonal Donut, è finalmente uscita! La nuova versione porta con sé una serie di nuove funzionalità, miglioramenti prestazionali e (ahimé) cambiamenti non retro-compatibili al codice rispetto alla precedente v4: siamo certi che non mancheremo di amarla, specialmente dopo questa estenuante attesa!

Ecco il changelog cumulativo della nuova versione 5.x aggiornato ad oggi, giorno della pubblicazione di Angular 5.0.0 final sul GitHub ufficiale del progetto. Per informazioni aggiuntive sulle Release Candidate precedenti, potete dare un’occhiata a questo articolo (dalla RC0 alla RC7), a questo articolo (per la RC8) e infine a questo articolo (per la RC9).

Cos’altro è rimasto da dire? Probabilmente nulla, a parte forse un paio di parole in maiuscolo…



5.0.0 pentagonal-donut (2017-11-01)


  • animations: allow @.disabled property to work without an expression (#18713) (2159342)
  • animations: report errors when invalid CSS properties are detected (#18718) (409688f), closes #18701
  • animations: support :increment and :decrement transition aliases (6f45519)
  • animations: support negative query limit values (86ffacf), closes #19259
  • common: accept object map for HttpClient headers & params (#18490) (1b1d5f1)
  • common: add an empty DeprecatedI18NPipesModule module (#18737) (83713dd)
  • common: drop use of the Intl API to improve browser support (#18284) (079d884), closes #10809 #9524 #7008 #9324#7590 #6724 #3429 #17576 #17478 #17319 #17200 #16838 #16624 #16625 #16591 #14131 #12632 #11376 #11187
  • common: generate   to tree shake locale data (#18907) (4878936)
  • common: mark NgTemplateOutlet API as stable (0a73e8d)
  • compiler-cli: add watch mode to   (#18818) (06d01b2)
  • compiler-cli: lower metadata   and   literal fields (#18905) (0e64261)
  • compiler: add representation of placeholders to xliff & xmb (b3085e9), closes #17345
  • compiler: allow multiple exportAs names (#18723) (7ec28fe)
  • compiler: deprecate i18n comments in favor of   (#18998) (66a5dab)
  • compiler: enabled strict checking of parameters to an   (#19412) (dfb8d21)
  • compiler: make   files portable (2572bf5)
  • compiler: reuse the TypeScript typecheck for template typechecking. (#19152) (996c7c2)
  • compiler: set   to false by default (#18756) (56238fe)
  • compiler: use typescript for resolving resource paths (43226cb)
  • core: Create StaticInjector which does not depend on Reflect polyfill. (d9d00bd)
  • core: add option to remove blank text nodes from compiled templates (#18823) (b8b551c)
  • core: support for bootstrap with custom zone (#17672) (344a5ca)
  • forms: add default updateOn values for groups and arrays (#18536) (ff5c58b)
  • forms: add options arg to abstract controls (ebef5e6)
  • forms: add status to   (233ef93)
  • forms: add updateOn and ngFormOptions to NgForm (0d45828)
  • forms: add updateOn blur option to FormControls (#18408) (333a708), closes #7113
  • forms: add updateOn submit option to FormControls (#18514) (f69561b)
  • forms: add updateOn support to ngModelOptions (1cfa79c)
  • http: deprecate @angular/http in favor of @angular/common/http (#18906) (72c7b6e)
  • platform-server: add an API to transfer state from server (#19134) (cfd9ca0)
  • platform-server: provide a DOM implementation on the server (2f2d5f3), closes #14638
  • platform-server: provide a way to hook into renderModule* (#19023) (8dfc3c3)
  • router: add ActivationStart/End events (8f79150)
  • router: add events tracking activation of individual routes (49cd851)
  • service-worker: introduce the @angular/service-worker package (#19274) (d442b68)
  • upgrade: propagate touched state of NgModelController (59c23c7)
  • upgrade: support lazy-loading Angular module into AngularJS app (30e76fc)
  • update angular to support TypeScript 2.4 (ca5aeba)

Performance Improvements

  • animations: reduce size of bundle by removing AST classes (#19539) (d5c9c5f)
  • compiler: don’t emit summaries for jit by default (b086891)
  • compiler: fix perf issue in loading aot summaries in jit compiler (fbc9537)
  • compiler: make the creation of   faster. (#19275) (edd5f5a)
  • compiler: only emit changed files for incremental compilation (745b59f)
  • compiler: only type check input files when using bazel (#19581) (0b06ea1)
  • compiler: only use tsickle if needed (#19275) (8f95b75)
  • compiler: skip type check and emit in bazel in some cases. (#19646) (a22121d)
  • compiler: speed up loading of summaries for bazel. (#19581) (81167d9)
  • compiler: speed up watch mode (#19275) (6665d76)
  • core: Remove decorator DSL which depends on Reflect (cac130e)
  • core: add option to remove blank text nodes from compiled templates (d2c0d98)
  • core: use native addEventListener for faster rendering. (#18107) (6279e50)
  • latest tsickle to tree shake: abstract class methods & interfaces (#18236) (b7a6f52)
  • switch angular to use StaticInjector instead of ReflectiveInjector (fcadbf4), closes #18496


  • compiler: The method  , deprecated in Angular 4.0, has been removed. Use   instead.
    • the Angular compiler now requires TypeScript 2.4.x.
  • router:   properties   and   have been removed as they were deprecated since v4.
  • compiler: the compiler option   is now disabled by default as the   element has been deprecated since v4. Use   instead. The option   and the   element will both be removed in Angular v6.
  • core:   has been removed as it was deprecated since v4. Use   instead.
  •  no longer accepts providers which depend on reflection. Specifically the method signature when from   to  .

Example: Before:

[/crayon] After:

[/crayon] NOTE: This only applies to platform creation and providers for the JIT compiler. It does not apply to   or  provides declarations.

Benchpress note: Previously Benchpress also supported reflective provides, which now require static providers.

I18n Changes (@angular/common)

Because of multiple bugs and browser inconsistencies, we have dropped the intl api in favor of data exported from the Unicode Common Locale Data Repository (CLDR). Unfortunately we had to change the i18n pipes (date, number, currency, percent) and there are some breaking changes.

I18n pipes:
  • Breaking change:
    • By default Angular now only contains locale data for the language  , if you set the value of   to another locale, you will have to import new locale data for this language because we don’t use the intl API anymore.
  • Features:
    • you don’t need to use the intl polyfill for Angular anymore.
    • all i18n pipes now have an additional last parameter   which allows you to use a specific locale instead of the one defined in the token   (whose default value is  ).
    • the new locale data extracted from CLDR are now available to developers as well and can be used through an API (which should be especially useful for library authors).
    • you can still use the old pipes for now, but their names have been changed and they are no longer included in the  . To use them, you will have to import the   after the   (the order is important):

    Don’t forget that you will still need to import the intl API polyfill if you want to use those deprecated pipes.

Date pipe
  • Breaking changes:
    • the predefined formats ( , …) now use the patterns given by CLDR (like it was in AngularJS) instead of the ones from the intl API. You might notice some changes, e.g.   will be  instead of   for  .
    • the narrow version of eras is now   instead of  , the format   is now similar to   and  .
    • the narrow version of months is now   instead of  , the format   is now the short standalone version of months.
    • the narrow version of the week day is now   instead of  , the format   is now similar to   and  .
    • the timezone   will now fallback to   and output   instead of the complete zone name (e.g.  ), this is because the quantity of data required to have all the zone names in all of the existing locales is too big.
    • the timezone   will now output the ISO8601 basic format, e.g.  , you should now use   to get  .
    Field typeFormatExample valuev4v5
    ErasNarrowA for ADGGGGGG
    MonthsNarrowS for SeptemberLMMMMM
    Week dayNarrowM for MondayEEEEEE
    TimezoneLong locationPacific Standard TimezNot available
    TimezoneLong GMTGMT+01:00ZZZZZ
  • Features
    • new predefined formats  .
    • the format   is now supported, e.g. the year   will be   and the year   will be  .
    • standalone months are now supported with the formats   to  .
    • week of the year is now supported with the formats   and  , e.g. weeks   and  .
    • week of the month is now supported with the format  , e.g. week  .
    • fractional seconds are now supported with the format   to  .
    • day periods for AM/PM now supports additional formats   and  . The formats   to   are similar, while   is the wide version if available (e.g.   for  ), or equivalent to   otherwise, and   is the narrow version (e.g.   for  ).
    • extra day periods are now supported with the formats   to   (and   to   for the standalone equivalents), e.g.  , ….
    • the short non-localized timezones are now available with the format   to  . The formats   to   will output   while the format   will be  .
    • the ISO8601 basic time zones are now available with the formats   to  . The formats   to   will output  , while the format   will be   and   will be  .
  • Bug fixes
    • the date pipe will now work exactly the same across all browsers, which will fix a lot of bugs for safari and IE.
    • eras can now be used on their own without the date, e.g. the format   will be   instead of  .
Currency pipe
  • Breaking change:
    • the default value for   is now   instead of  . This means that by default you will see  for   instead of   previously.
  • Deprecation:
    • the second parameter of the currency pipe ( ) is no longer a boolean, it now takes the values   or  . A boolean value is still valid for now, but it is deprecated and it will print a warning message in the console.
  • Features:
    • you can now choose between   or   which gives you access to more options for some currencies (e.g. the canadian dollar with the code   has the symbol   and the symbol-narrow  ).
Percent pipe
  • Breaking change
    • if you don’t specify the number of digits to round to, the local format will be used (and it usually rounds numbers to 0 digits, instead of not rounding previously), e.g.   will output   for the locale  instead of   previously.

Deprecated code

  • router:   properties   and   have been removed as they were deprecated since v4.
  • common:   has been removed as it was deprecated since v4. Use   instead. This does not impact the use of  in your templates.
  • common:   has been removed as it was deprecated since v4. Use   instead.
  • core:   has been removed as it was deprecated since v4. Use  instead.
  • core:   has been removed as it was deprecated since v4.
  • router: the values   and   for the router parameter   have been removed as they were deprecated. Use   or   instead.
  • core:   no longer takes ChangeDetectionRef as a first argument as it was not used and deprecated since v4.
  • core:   has been removed because it was deprecated since v4. Use   instead.
  • platform-webworker:   has been removed as it was deprecated since v4. Use  instead.
  • platform-browser:   has been removed from   as it was deprecated since v4. Import it from   instead.
  • core:   no longer takes a parameter as it was not used and deprecated since v4.
  • compiler: the option   for the compiler has been removed as it had no effect and was deprecated since v4.
  • common: remove deprecated   (#18758) (ec56760)
  • common: remove deprecated   (#18780) (7522987)
  • compiler: remove option   (#18778) (499d05d)
  • compiler: split compiler and core (#18683) (0cc77b4)
  • compiler: –   now additionally depends on   as a peer dependency.
  • core: remove deprecated   argument in   (#18757) (be9713c)
  • core: remove deprecated   (#18779) (d61b902)
  • core: remove deprecated   (#18971) (3c4eef8)
  • core: remove deprecated   (#18782) (f2a2a6b)
  • core: remove deprecated   (#18757) (596e9f4)
  • core: remove deprecated parameter for   (#18759) (8f41326)
  • platform-browser: remove deprecated   (#18760) (d7f42bf)
  • platform-webworker: remove deprecated   (#18761) (a56468c)
  • router: remove deprecated   properties (#18781) (d1c4a94)
  • router: remove deprecated   properties (a9ef858)
  • router: remove deprecated   options (#18781) (d76761b)
  •  is now deprecated as it will be remove. Use   as a replacement.

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane.

View all posts by Ryan