HttpClientModule のインポートとインタセプタの設定
Angular4.3 で導入された HttpClient に関する話。
HttpClientModule は app.module.ts で imports に追加するのが普通であろう。そして app.module.ts か、もしくは共通処理モジュールをまとめた shared.module.ts あたりに、必要な HttpInterceptors を作るのではないだろうか。
これがアプリ全体で使われる HttpClient の動作を決めるワケだが、この前チーム内のあるメンバが、各機能ごとの NgModule 内にさらに HttpClientModule の imports 指定を書いていた。src/app/hoge-users/hoge-users.module.ts あたりにだ。
この NgModule を app.module.ts で読み込むとどうなるかというと、shared.module.ts で設定していたインタセプタ類の設定が無効になってしまうのだ。
NgModule の使い方を何度説明しても分かっていない、そして分かっていないのに適当に実装して提出してくるメンバが多くて、こういうあり得ない不具合によく遭遇してつらい。