【Angular】V8からV9にアップデート、重要じゃない所まとめてみた

2020年2月17日

update方法

まずは現在の環境のAngular8のバージョンを最新にします

ng update @angular/cli@8 @angular/core@8

うまく行ったら、V9にアップデートします

ng update @angular/cli @angular/core

ちなみに私は一発でうまく行きませんでした。
ionic使ってアプリを作っていて、依存関係の問題でエラーが発生しました。
対策としては以下の二つあるかと思います。

・ionic/angularのバージョンをベータ版まで引き上げてしまう
・–forceをつけて強制アップデートしてしまう

ionic/angularのバージョンをベータ版に挙げる方法は以下の通り

ng update @ionic/anguar --next

現状ベータ版しかないですが、おそらくすぐ上がると思うので、待てる方はリリースされるまで待ってから、ionic/angularのバージョンを上げていくほうが良いかと思います。
その場合は –next を消してアップデートすればよいかと思います。

–forceをつけてバージョンを強制的に上げる方法は以下の通り

ng update @angular/cli @angular/core --force

この方法はあまりお勧めできません。
依存関係など一切無視してバージョン上げてしまうので、どこで何が起こるかわからないです。
どうしてもバージョンアップできない場合にのみ、特定のモジュールだけ –force をつけて強制アップデートするなど、なるべく影響範囲を少なくしてから実行することをお勧めします。

変わったところ

V9からの変更点に関して、重要な情報は以下にまとまってます。
https://blog.angular.io/version-9-of-angular-now-available-project-ivy-has-arrived-23c97b63cfa3
これに関しては後程じっくり読みながらまとめたいと思います。

とりあえずこれに書かれていないけど小さな変更があり、話のネタくらいにはなりそうだったので、簡単に書いておこうと思います。

HammerJSが不要になった

今までAngularMaterialの一部モジュール(slideToggle,slider,toolTip)でジェスチャー機能をサポートするためにHammerJSに依存していたけど、どうやらそれがいらなくなったみたいです。
影響としてpackage.jsonmain.tsからhammerjsがなくなるくらいです。
もしテストでHammerJSを利用しているところがあるなら、注意が必要とのことです。
特にslideToggleはジェスチャーをサポートしなくなったらしいので、この部分は注意が必要そうです。
詳細は以下に記載ありますので、ご確認ください。
https://github.com/angular/components/blob/3a204da37fd1366cae411b5c234517ecad199737/guides/v9-hammerjs-migration.md

Angular Materialの公式サイトがちょっと変わった

componentのAPIリファレンス欄が結構変わりました。
Testingの項目が追加されたみたいです。
今までは各コンポーネントのリファレンスだけだったのですが、各コンポーネントのテストのリファレンスまで追加されたということでだいぶ充実していますね。
新: https://material.angular.io/components/autocomplete/api
旧: https://v8.material.angular.io/components/autocomplete/api

他にもForm Controlsの選択中の項目がわかりやすくなっていたり、テーマカラーの選択がわかりやすくなっているようです。
特にテーマカラーの方は個人的に好きです。

これが

これに変わりました

ちなみにどうでもいいことですが、この画面2020/02/07時点ではまだバグが残ってるみたいです笑
画面サイズ大きいとcomponent APIリファレンスと、component-testing API リファレンスが横並びで表示されて、その右側に目次が表示され、
画面サイズが小さいとAPIリファレンスが縦並びで表示されますが
画面サイズ大⇒画面サイズ小⇒画面サイズ大にすると目次が表示されなくなりました笑

右側の目次に注目してもらえればわかると思うんですが、大きくした後の目次が消えている、、、
すぐに修正入るとは思うんですが、面白かったので撮っておきました笑