Обновление для (2017-03-13) :
Все упоминания moduleId удалены. "Компонент относительных путей" кулинарная книга удалена
Мы добавили новый плагин SystemJS (systemjs-angular-loader.js) в нашу рекомендуемую конфигурацию SystemJS. Этот плагин динамически преобразует «относительные компоненты» пути в templateUrl и styleUrls в «абсолютные пути» для вас.
Мы настоятельно рекомендуем вам писать только относительные компоненты. Это единственная форма URL, обсуждаемая в этих документах. Вам больше не нужно писать @Component({ moduleId: module.id })
, и вы не должны.
Источник: https://angular.io/docs/ts/latest/guide/change-log.html
Определение:
moduleId?: string
moduleId
параметр внутри @Component
аннотации принимает string
значение, которое является;
« Идентификатор модуля, который содержит компонент ».
Использование CommonJS: module.id
,
Использование SystemJS: __moduleName
Причина использованияmoduleId
:
moduleId
используется для определения относительных путей для ваших таблиц стилей и шаблонов, как сказано в документации.
Идентификатор модуля, который содержит компонент. Необходимо иметь возможность разрешать относительные URL-адреса для шаблонов и стилей. В Dart это может быть определено автоматически и не требует настройки. В CommonJS это всегда может быть установлено в module.id.
ссылка (старая): https://angular.io/docs/js/latest/api/core/index/ComponentMetadata-class.html
мы можем указать расположение файлов шаблона и стиля относительно файла класса компонента, просто установив свойство moduleId метаданных @Component
ссылка: 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
})