Mise à jour pour (2017-03-13) :
Toute mention de moduleId a été supprimée. Livre de recettes "Chemins relatifs des composants" supprimé
Nous avons ajouté un nouveau plugin SystemJS (systemjs-angular-loader.js) à notre configuration SystemJS recommandée. Ce plugin convertit dynamiquement les chemins "relatifs aux composants" dans templateUrl et styleUrls en "chemins absolus" pour vous.
Nous vous encourageons fortement à n'écrire que des chemins relatifs aux composants. C'est la seule forme d'URL abordée dans ces documents. Vous n'avez plus besoin d'écrire @Component({ moduleId: module.id })
, ni ne devriez-vous.
Source: https://angular.io/docs/ts/latest/guide/change-log.html
Définition:
moduleId?: string
moduleId
paramètre à l'intérieur de l' @Component
annotation prend une string
valeur qui est;
" L'ID du module du module qui contient le composant. "
Utilisation CommonJS: module.id
,
Utilisation de SystemJS: __moduleName
Raison d'utilisermoduleId
:
moduleId
est utilisé pour résoudre les chemins relatifs de vos feuilles de style et modèles comme indiqué dans la documentation.
L'ID du module du module qui contient le composant. Nécessaire pour pouvoir résoudre les URL relatives des modèles et des styles. Dans Dart, cela peut être déterminé automatiquement et n'a pas besoin d'être défini. Dans CommonJS, cela peut toujours être défini sur module.id.
réf (ancienne): https://angular.io/docs/js/latest/api/core/index/ComponentMetadata-class.html
nous pouvons spécifier les emplacements des fichiers de modèle et de style par rapport au fichier de classe de composant simplement en définissant la propriété moduleId des métadonnées @Component
réf: https://angular.io/docs/ts/latest/cookbook/component-relative-paths.html
Exemple d'utilisation:
Structure des dossiers:
RootFolder
├── index.html
├── config.js
├── app
│ ├── components
│ │ ├── my.component.ts
│ │ ├── my.component.css
│ │ ├── my.component.html
Sans 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
})
Avec 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
})