(2017-03-13)の更新:
moduleIdに関するすべての言及が削除されました。「コンポーネントの相対パス」クックブックが削除されました
推奨されるSystemJS構成に新しいSystemJSプラグイン(systemjs-angular-loader.js)を追加しました。このプラグインは、templateUrlおよびstyleUrlsの「コンポーネント相対」パスを「絶対パス」に動的に変換します。
コンポーネント相対パスのみを記述することを強くお勧めします。これは、これらのドキュメントで説明されている唯一の形式のURLです。あなたはもう書く必要はありませんし、そうする必要@Component({ moduleId: module.id })
もありません。
出典:https : //angular.io/docs/ts/latest/guide/change-log.html
定義:
moduleId?: string
moduleId
@Component
アノテーション内のパラメーターは次のstring
値を取ります。
「コンポーネントを含むモジュールのモジュールID。」
CommonJSの使用法:module.id
、
SystemJSの使用法: __moduleName
使用する理由moduleId
:
moduleId
ドキュメントで言うように、スタイルシートとテンプレートの相対パスを解決するために使用されます。
コンポーネントを含むモジュールのモジュールID。テンプレートとスタイルの相対URLを解決できる必要があります。Dartでは、これは自動的に決定されるため、設定する必要はありません。CommonJSでは、これは常にmodule.idに設定できます。
ref(old):https : //angular.io/docs/js/latest/api/core/index/ComponentMetadata-class.html
@ComponentメタデータのmoduleIdプロパティを設定するだけで、コンポーネントクラスファイルに関連するテンプレートとスタイルファイルの場所を指定できます
ref:https : //angular.io/docs/ts/latest/cookbook/component-relative-paths.html
使用例:
フォルダー構造:
RootFolder
├── index.html
├── config.js
├── app
│ ├── components
│ │ ├── my.component.ts
│ │ ├── my.component.css
│ │ ├── my.component.html
module.idなし:
@Component({
selector: 'my-component',
templateUrl: 'app/components/my.component.html', <- Starts from base path
styleUrls: ['app/components/my.component.css'] <- Starts from base path
})
module.idを使用:
tsconfig.json:
{
"compilerOptions": {
"module": "commonjs", <- need to change this if you want to use module.id property
...
@Component({
moduleId: module.id,
selector: 'my-component',
templateUrl: 'my.component.html', <- relative to the components current path
styleUrls: ['my.component.css'] <- relative to the components current path
})