一週間の間にAngular関連レポジトリへ取り込まれたコミットについて見ていきます。フレームワーク・ツールの利用者にあまり関係のないものは省略しています。
angular/angular
Commits: https://github.com/angular/angular/commits/main/?since=2025-03-13&until=2025-03-19
docs: added short explanation about event reply (#60349)
ハイドレーションのガイドドキュメントにEvent Replayについてのセクションが追加されました。
feat(compiler-cli): support type checking of host bindings (#60267)
コンパイラーが、コンポーネントやディレクティブのホストバインディングに対する型チェックをサポートするようになりました。これにより、ホストバインディング内の型エラーが早期に発見されるため、安全に利用できます。この改善により Language Serviceで型エラーを検出できている様子がプルリクエストの説明文で確認できます。
feat(core): add support for two-way bindings on dynamically-created components (#60342)
動的に生成されたコンポーネントで双方向バインディングがサポートされるようになりました。先週実装された動的コンポーネントへの宣言的バインディング機能の拡張です。次のような書き方でSignalを介した双方向バインディングを宣言できます。
import {createComponent, signal, twoWayBinding} from '@angular/core';
const value = signal('');
createComponent(MyCheckbox, {
bindings: [
twoWayBinding('value', value),
],
});
fix(core): remove rejectErrors option encourages uncaught exceptions (#60397)
toSignal()
ユーティリティ関数からrejectErrors
オプションが削除されます。詳しい背景はコミットメッセージに書いてありますが、現在このフラグに依存しているコードはtoSignal(myStream.pipe(catchError(() => EMPTY)))
のような形で、toSignal
関数に渡すObservableの段階でエラーハンドリングについての振る舞いを制御するように変更する必要があります。
破壊的変更ではありますが、toSignal
関数はまだ開発者プレビューであるため、非推奨段階を踏まずにv20でリリースされます。
angular/angular-cli
Commits: https://github.com/angular/angular-cli/commits/main/?since=2025-03-13&until=2025-03-19
@angular/ssr APIの安定化
サーバーサイドレンダリングのための新しいAPIが開発者プレビューから安定APIに昇格しました。provideServerRouting
は一時的に安定版となりましたが、すぐ後にprovideServerRendering
という包括的なAPIに置き換わる形で消えています。開発者プレビュー版で利用していた場合は移行が必要です。(ng updateでの自動マイグレーションがあります)
feat(@angular/build): Support Sass package importers
Sassに新たに実装されたパッケージインポート機能に対応しました。Sassファイルからnode_modules
で管理されたパッケージを参照する時、pkg:library
というフォーマットを使うことができます。これまではload_paths
にnode_modules
を含めたり、~
プレフィックスをつけたりと使うバンドラーやビルドツールによってバラバラでしたが、統一された仕組みが提供されることでSassコードのポータビリティが改善されます。
fix(@schematics/angular): generate components without a .component extension/type
ng generate
コマンドなどで生成されるコンポーネントがデフォルトでComponent
サフィックスを持たなくなります。またファイル名からも.component
という部分がなくなります。この変更は先週の.ng.html
への変更と同じく、Angular Style Guideの改訂に対応するものです。これまでと同じようにサフィックスをつけたい場合は、明示的な—type=Component
というオプションが利用できます。
同様の変更がServiceファイルについても行われています。
angular/components
Commits: https://github.com/angular/components/commits/main/?since=2025-03-13&until=2025-03-19
feat(material/button): allow appearance to be set dynamically
MatButton
コンポーネントの表示種別をバインディングにより動的に変更できるようになりました。これまでは<button mat-flat-button>
や <button mat-outlined-button>
のように属性セレクターと一体となっており、動的に変更することはできませんでした。今回新たに <button matButton=”outlined”>
のような指定が可能となり、右辺にセットされる値によって動的に表示を変えられるようになりました。
既存の属性セレクターはv20時点では互換性があり、破壊的変更にはなっていませんが、いずれ非推奨となることは予想されるため移行推奨と言えるでしょう。今後ng updateによる自動マイグレーションが用意されるかもしれません。
feat(material/button): add support for tonal button (#30638)
MatButton
にもう一つの機能追加があり、こちらは新たな表示種別の追加です。Material Design v3 (Material 3) で定義されている “Filled Tonal Button” の表示に対応しました。OutlinedとFilledの中間にあたる強調レベルのボタンです。上述の新しいAPIにのみ対応しており、<button matButton=”tonal”>
という指定で利用可能です。
fix(material/autocomplete): allow overlay backdrop by setting hasBackdrop option (#30631)
MatAutocomplete
ディレクティブがバックドロップを持てるようになりました。
これまではインラインでオートコンプリート用のドロップダウンリストが表示されるだけでしたが、バックドロップを使うことでどれかの候補を選択するまで他の操作を防ぐようなモーダル表示ができるようになります。