lacolaco's marginalia

Weekly Commits on Angular 2025-03-05

一週間の間にAngular関連レポジトリへ取り込まれたコミットについて見ていきます。フレームワーク・ツールの利用者にあまり関係のないものは省略しています。

angular/angular

Commits: https://github.com/angular/angular/commits/main/?since=2025-02-27&until=2025-03-05

v20.0リリース日程の設定

v20.0のリリース予定日が暫定で5/26となりました。

httpResourcemap オプションを parse にリネーム

レスポンスボディに宣言的な変換処理を行うための関数オプションを map から parse にリネームしました。おそらくZodやValibotなどのバリデーションライブラリとの機能的な親和性を考慮したものと思われます。

上記のツイートのサンプルコードにおける map オプションの部分が次のように書けるはずです。

swPersonResource = httpResource(
  () => `https://swapi.dev/api/people/${this.id()}`,
  { parse: starWarsPersonSchema.parse },
);

Injector.destroy メソッドの公開

Injector.create 関数で動的に作成されたインジェクターの破棄を行うdestroyメソッドが公開APIとして露出されました。実装上はもともと存在したので振る舞いの変更はありません。

テンプレート内でのタグ付きテンプレートリテラルの許可

コンポーネントテンプレート内でタグ付きテンプレートリテラルの宣言が可能になりました。先週に引き続き、テンプレート式におけるECMAScript構文のサポートカバレッジを広げる狙いです。

@Component({
  template: '{{ greet`Hello, ${name()}` }}'
})
export class MyComp {
  name = input();

  greet(strings: TemplateStringsArray, name: string) {
    return strings[0] + name + strings[1] + '!';
  }
}

動的なコンポーネント生成の機能拡充

createComponent関数などコンポーネントインスタンスを動的に生成するAPIにディレクティブをアタッチできるようになりました。

また、動的に生成されるコンポーネントに対してインプット・アウトプットを宣言的に渡すAPIも追加されました。テンプレート中でのみ可能だった操作がTypeScriptコード上でもサポートされます。

TypeScript 5.8未満のサポート終了

TypeScript 5.8未満のサポートを終了しています。v20.0に含まれる破壊的変更になります。

httpResourceにおけるcontextオプションのサポート

HttpClientのインターセプター機構でサポートされているcontextオプションが追加されました。実装漏れだったようです。

angular/angular-cli

Commits: https://github.com/angular/angular-cli/commits/main/?since=2025-02-27&until=2025-03-05

provideServerRoutesConfig 関数の廃止

SSR用の provideServerRoutesConfig APIは開発者プレビューとして公開されていましたが、provideServerRouting APIと置き換わる形で廃止されます。

angular/components

Commits: https://github.com/angular/components/commits/main/?since=2025-02-27&until=2025-03-05

CdkListboxディレクティブの追加

angular/cdk-experimentalパッケージにARIA Roleのlistboxに対応するCdkListboxディレクティブの実装が追加されました。また、CdkListboxにおけるキーボード操作やtypeahead機能など見た目とは別の振る舞いについては新たに ui-patterns というサブパッケージが追加されたようです。今後他のCDKディレクティブの裏側でも活用されることが予想されます。