Mise à jour pour (2017-03-13) :
Toute mention de moduleId a été supprimée. Livre de cuisine "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 vivement à n'écrire que des chemins relatifs aux composants. C'est la seule forme d'URL abordée dans cette documentation. Vous n'avez plus besoin d'écrire @Component({ moduleId: module.id })
et vous ne devriez pas non plus.
Source : https://angular.io/docs/ts/latest/guide/change-log.html
Définition :
moduleId?: string
moduleId
à l'intérieur de la @Component
prend une annotation string
qui est ;
" L'identifiant du module qui contient le composant. "
Utilisation de CommonJS : module.id
,
Utilisation de SystemJS : __moduleName
Raison de l'utilisation moduleId
:
moduleId
est utilisé pour résoudre les chemins relatifs pour vos feuilles de style et vos modèles, comme indiqué dans la documentation.
L'identifiant du module qui contient le composant. Nécessaire pour pouvoir résoudre les urls relatives pour les modèles et les styles. Dans Dart, il peut être déterminé automatiquement et il n'est pas nécessaire de le définir. Dans CommonJS, il peut toujours être défini par module.id.
ref(old) : https://angular.io/docs/js/latest/api/core/index/ComponentMetadata-class.html
nous pouvons spécifier l'emplacement des fichiers de modèle et de style par rapport au fichier de classe du composant en définissant simplement 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 du dossier :
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
})