🎉

[Release Note] Angular 16.2.0リリース! 新たなテスト用APIの追加や、SSRへの展望など

2023/08/13に公開

先日2023年8月10日に、Angular 16のマイナーバージョンアップ v16.2.0 が無事リリースされました!

リリースノートは次のリンクから参照できます。

featを中心に、リリース内容を見ていきましょう!

機能追加(feat)アップデート

動的にコンポーネントの差し替えなどを可能にするNgComponentOutlet

従来は@Inputによるバインディングを行えませんでしたが、今回のアップデートでこれが可能になりました。

<!--
  /** StandaloneなComponentならそのまま使える。 */
  myComponent = MyComponent;
  /** `Record<string, unknown>`型で、@Inputに指定されている値を一括で渡す。 */
  inputsExpression = { title: 'Hello', data: { id: 1, name: 'A' } };
--->
<ng-container *ngComponentOutlet="myComponent; inputs: inputsExpression;">
</ng-container>

初期化後にngSrcを変更可能にする (#50683)

こちらの報告にある通り、従来はngSrcを利用した描写の再変更ができなかったようですが、このコミットにより動的なngSrcの変更に対応しました。

@scopeクエリ内のセレクタをスコープ化 (#50747)

W3Cでワーキングドラフトになっている@scopeルールのサポートが入ったようです。

afterRenderおよびafterNextRenderを追加 (#50607)

開発者プレビューとして、afterRender/afterNextRender関数が追加されました。

これは、Signalsでのライフサイクルを実現するためのもので、ハイドレーションの文脈も考慮されているようです。

インジェクタデバッグAPIを作成 (#48639)

DI関連のデバッグを手助けするための、3つのAPI(getDependenciesFromInstantiation/getInjectorProviders/getInjectorParent)が追加されました。

  • getDependenciesFromInstantiation: インジェクタと、そのインジェクタによってインスタンス化されたトークンから、該当の注入されたすべてのサービスを検出する
  • getInjectorProviders: インジェクタで設定されているすべてのプロバイダを検出する
  • getInjectorParent: 指定したインジェクタの親を検出する

Injector.createでProvider型をサポート (#49587)

Injector.create関数は、従来StaticProviderしか受け付けなかったのですが、これにProvider型が渡せるようになりました。

RouterTestingHarnessのfixtureをpublicに (#50280)

RouterTestingHarnessを利用したテストを行う際、ハーネスのCopmonentFixtureがprivate修飾子に設定されていたため、アクセスできず不便だったのが解消されました。

[Angular CLI] esbuildによるビルドや、SSRなどのSchematics対応(の準備?)

@nguniversalではなく@angular/cliでSSRをサポートする」という課題への対応が進んでいます。
ビルドフローにも影響があるため「esbuild/vite対応」の実装も一緒に行われています。

また、これに先駆けてSSG(Prerender)の機能がCLIから利用できるようになりました!

しかし、まだ移行のためのジェネレータが提供されていないので、angular.jsonなどに適切な記述を自身で行わなければいけません。

esbuildでビルドしたファイルをサービングする際、最適にpreloadするファイルをブラウザに伝えるための情報が含まれるようになりました。

修正・パフォーマンス(fix/perf)アップデート

他にも、機能追加以外の修正やパフォーマンス改善など、次のようなアップデートがありました。

Angular日本ユーザー会

Discussion