Aggiornamento per (13-03-2017) :
Tutta la menzione di moduleId rimossa. Libro di cucina "Percorsi relativi componenti" eliminato
Abbiamo aggiunto un nuovo plug-in SystemJS (systemjs-angular-loader.js) alla nostra configurazione SystemJS consigliata. Questo plugin converte dinamicamente i percorsi "relativi ai componenti" in templateUrl e styleUrls in "percorsi assoluti" per te.
Ti consigliamo vivamente di scrivere solo percorsi relativi ai componenti. Questa è l'unica forma di URL discussa in questi documenti. Non hai più bisogno di scrivere @Component({ moduleId: module.id })
, né dovresti.
Fonte: https://angular.io/docs/ts/latest/guide/change-log.html
Definizione:
moduleId?: string
moduleId
il parametro all'interno @Component
dell'annotazione assume un string
valore che è;
" L'ID del modulo che contiene il componente. "
Utilizzo CommonJS: module.id
,
Utilizzo di SystemJS: __moduleName
Motivo per l'usomoduleId
:
moduleId
viene utilizzato per risolvere i percorsi relativi per i fogli di stile e i modelli, come indicato nella documentazione.
L'ID del modulo che contiene il componente. Necessario essere in grado di risolvere gli URL relativi per modelli e stili. In Dart, questo può essere determinato automaticamente e non deve essere impostato. In CommonJS, questo può sempre essere impostato su module.id.
ref (vecchio): https://angular.io/docs/js/latest/api/core/index/ComponentMetadata-class.html
possiamo specificare le posizioni del modello e dei file di stile relativi al file di classe del componente semplicemente impostando la proprietà moduleId dei metadati @Component
rif: https://angular.io/docs/ts/latest/cookbook/component-relative-paths.html
Esempio di utilizzo:
Struttura delle cartelle:
RootFolder
├── index.html
├── config.js
├── app
│ ├── components
│ │ ├── my.component.ts
│ │ ├── my.component.css
│ │ ├── my.component.html
Senza 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
})
Con 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
})