開発覚書はてな版

個人的な開発関連の備忘録

【Angular】Angular 8の内容あれこれ

概要

Angular 8がリリースされましたね。
Ivy はまだPreview機能での提供になります。
いつも通り、気になった箇所をピックアップして紹介していきます。

blog.angular.io

github.com

Differential Loading by Default

  • Modern JS(es2015)、Legacy JS(es5) 向けのビルドを作成して、ブラウザ側で判断してバンドルファイルを取得するようです。
  • es2015対応のブラウザではバンドルサイズが7-20%程度削減されます。

Route Configurations use Dynamic Imports

  • Route設定のloadChildrenの定義がDynamic importsでの定義に移行しました。
  • ng update を使用することで自動的に移行されます。

Removed APIs

以下のAPIが Angular 8 から削除されました。

  • @angular/http の全て
  • @angular/http/testing の全て
  • @angular/platform-browser
    • DOCUMENT
  • @angular/core/testing
    • TestBed.deprecatedOverrideProvider()
    • TestBedStatic.deprecatedOverrideProvider()

基本的には以下のページで移行先のAPIを紹介しています。
@angular/http の廃止は @angular/common/http が提供されてからアナウンスされていたので、やっと廃止されたという印象です。

New Deprecation Guide

  • 廃止予定が宣言されてから、メジャーバージョンがN+2までサポート予定になりました。(8で廃止予定になったものは9と10ではサポート)
  • https://angular.io/guide/deprecations
  • 次のバージョンでは、 <template>Deprecated*pipes削除予定です。

@ViewChild ・ @ContentChild の第二引数が必須になった

  • static フラグの設定が必須になりました。かなり玄人向けの機能です。
  • {static: true} の場合、 ngOnInit から使用可能です。
  • {static: false} の場合、 ngAfterViewInit から使用可能です。

angular.io

TestBed.getの型付推奨

TypeScriptのバージョンサポート

  • TypeScript 3.3以降をサポート

その他軽微なもの

  • FormArray.clear の追加