Angular Info

Angular 2.0.1/2.1.0-beta.0のリリース

どうも、らこです。Angular 2.0.0の公開から初めてのアップデートがリリースされました。
今回はバグ修正だけを取り込んだ2.0.1と、新しい機能を追加した2.1.0-beta.0の同時リリースです。2.0.0リリース時の宣言通り、semverに従ったバージョニングになっています。
それでは今回の変更点をピックアップしていきます。

2.0.1
2.1.0-beta.0

ベータ版のインストール方法

今回より、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化されない問題が修正されました。

  • compiler: safe property access expressions work in event bindings (#11724) (a95d652)

(click)="foo?.bar()" というふうに、イベントバインディングの文の中で ?. シンタックスが使えるようになりました。

  • compiler: throw when Component.moduleId is not a string (bd4045b), closes #11590

Component.moduleIdについて、実行時に文字列型かどうかのチェックを行うようになりました。

  • compiler: do not provide I18N values when they’re not specified (03aedbe), closes #11643

AoTコンパイル時に、常に--localeオプションが求められていた不具合が修正されました。

  • core: ContentChild descendants should be queried by default (0dc15eb), closes #1645

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: update the router not to reset router state when updating root component (#11799) (31dce72)

routerパッケージの次期バージョン 4.0.0に向けた内部の修正です


記事・動画紹介

Victor Savkin氏がRouterのURLルーティングの規則や機能などを詳しく解説しています。

安定と信頼のthoughtram blogです。Angular 2のアニメーションAPIについて概要の解説をしています。

Pascal Precht氏によるNgModule機能のwebinarです。とてもわかりやすく重要なポイントを解説しているので必見です。


今回はこのあたりで。それではまた。