一週間の間に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となりました。
httpResource
の map
オプションを 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ディレクティブの裏側でも活用されることが予想されます。