どうも、らこです。Angular 2.0.0の公開から初めてのアップデートがリリースされました。
今回はバグ修正だけを取り込んだ2.0.1と、新しい機能を追加した2.1.0-beta.0の同時リリースです。2.0.0リリース時の宣言通り、semverに従ったバージョニングになっています。
それでは今回の変更点をピックアップしていきます。
ベータ版のインストール方法
今回より、npmのリリースタグを用いて安定版とベータ版を同時リリースしています。npm info @angular/core
コマンドを実行すればわかりますが、latestバージョンが2.0.1、nextバージョンが2.1.0-beta.0になっています。
何もバージョンを指定せずにnpmでインストールするとlatestタグが使われます。2.1.0-beta.0をインストールする場合は、 npm install @angular/core@next
というふうにタグを付けましょう。
2.0.1の修正点
- common: fix ngOnChanges signature of NgTemplateOutlet directive (14ee759)
NgTemplateOutlet
クラスのngOnChanges
メソッドが正しく宣言されていなかった問題が修正されました。
AoTコンパイル時にNgTemplateOutlet
を使うとエラーが発生していたのが解決されます。
[attribute~=value]
形式のセレクターを使ったCSSが、正しくShadow CSS化されない問題が修正されました。
(click)="foo?.bar()"
というふうに、イベントバインディングの文の中で ?.
シンタックスが使えるようになりました。
Component.moduleId
について、実行時に文字列型かどうかのチェックを行うようになりました。
AoTコンパイル時に、常に--locale
オプションが求められていた不具合が修正されました。
ContentChild
が、直下の要素だけでなくその子孫までクエリするのをデフォルトの動作としました。
次のような場合に、<some-component>
は #foo
で参照される要素をクエリするようになります。
<some-component>
<div>
<div #q></div>
</div>
</some-component>
- forms: disable all radios with disable() (2860418)
ラジオボタンのコントロールに対してdisable
メソッドを呼び出したときに、グループ内のすべてのラジオボタンを無効にするよう修正されました。
- forms: make setDisabledState optional for reactive form directives (#11731) (51d73d3), closes #11719
ControlValueAccessor#setDisabledState
メソッドがオプショナルにもかかわらず常に呼び出されていた部分が修正されました。
ngModel
ディレクティブのdisabled
プロパティを使いやすくする修正が行われました。
- upgrade: allow attribute selectors for components in ng2 which are not part of upgrade (#11808) (b81e2e7), closes #11280
UpgradeAdapter
を使った際に、Angular 2側のテンプレートでは属性セレクタのコンポーネントを使用できるようになりました。
2.1.0-beta.0の変更点
Features
- router: add router preloader to optimistically preload routes (5a84982)
routerパッケージに、Preloadingという仕組みが導入されます。これはrouterのLazyLoading機能によってAngularモジュールの遅延読み込みを行うとき、モジュールの読み込みのタイミングを制御するためのものです。
Preloadingの処理はPreloadingStrategy
という設定によって制御され、デフォルトでは全くPreloadingを行わないNoPreloading
が設定されています。
ビルトインのPreloadingStrategy
は、NoPreloading
の他にもうひとつPreloadAllModules
があり、こちらは逆にすべての子モジュールを即座に読み込む設定です。
Preloadingは、canLoad
が設定されているルートとその子孫には適用されません。
PreloadingStrategy
の設定は、RouterModule.forRoot
メソッドの第二引数オプションに次のように渡します。
RouteModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})
Bug Fixes
routerパッケージの次期バージョン 4.0.0に向けた内部の修正です
記事・動画紹介
Victor Savkin氏がRouterのURLルーティングの規則や機能などを詳しく解説しています。
安定と信頼のthoughtram blogです。Angular 2のアニメーションAPIについて概要の解説をしています。
Pascal Precht氏によるNgModule
機能のwebinarです。とてもわかりやすく重要なポイントを解説しているので必見です。
今回はこのあたりで。それではまた。