HttpClientModule のインポートとインタセプタの設定

Angular4.3 で導入された HttpClient に関する話。

HttpClientModuleapp.module.tsimports に追加するのが普通であろう。そして app.module.ts か、もしくは共通処理モジュールをまとめた shared.module.ts あたりに、必要な HttpInterceptors を作るのではないだろうか。

これがアプリ全体で使われる HttpClient の動作を決めるワケだが、この前チーム内のあるメンバが、各機能ごとの NgModule 内にさらに HttpClientModuleimports 指定を書いていた。src/app/hoge-users/hoge-users.module.ts あたりにだ。

この NgModule を app.module.ts で読み込むとどうなるかというと、shared.module.ts で設定していたインタセプタ類の設定が無効になってしまうのだ。

NgModule の使い方を何度説明しても分かっていない、そして分かっていないのに適当に実装して提出してくるメンバが多くて、こういうあり得ない不具合によく遭遇してつらい。