質問: ``` import {NgModule} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; import {CommonModule} from '@angular/common'; import {FormsModule} from '@angular/forms'; import {HttpModule} from '@angular/http'; import {RouterModule} from '@angular/router'; import {APP_ROUTES} from './app.routes'; @NgModule({ imports: [BrowserModule, CommonModule, FormsModule, HttpModule, RouterModule.forRoot(APP_ROUTES)] }) ``` という風にして、最初の方で`CommonModule`をimportし、 `@NgModule`内でまた`CommonModule`をimportしてます。 これは何の意味があるのでしょうか。 このモジュール配下のファイルにおいては、最初のimportは必要なくなるということでしょうか? 例えばこのモジュール配下のファイルは`CommonModule`を、最初の方でimportしなくてよくなるのでしょうか? 最初のimportと`@NgModule`配下のimportの意味の違いが全く分かりません。 ご存知の方、教えてください。
回答: 下記のimportは単にファイルの場所をしていし、変数や関数を扱えるようにしているだけです。 日本語で言うと「node_moduleディレクトリの@agularディレクトリのcommonの中のCommonModuleを使用できるようにする」ということになりますかね。 ``` import {CommonModule} from '@angular/common'; ``` @ngModuleのimportと言うよりAngular独自のmoduleは「アプリケーションを整理し、外部ライブラリの機能を使ってアプリケーションを拡張する機能」の事です。 importで定義した物は使用可能にしています。逆に定義しないと動きません。 分かりやすいものではFormsModuleですかね。input等を使用するサンプルアプリを作ってみて動作確認後、importのFormsModuleを外すと、動作できなくなります。 公式にngModule基礎が掲載されています。 蛇足ですが本来、moduleは「インスタンス化できない。処理のみ」を指すことが多いです。Angularのmodule(ngModume)と意味が異なるので注意が必要です。