J'ai ce NgModule:
@NgModule({
imports: [
CommonModule
],
exports: [
SP21LoadingBar
],
declarations: [SP21LoadingBar]
})
export class SP21LoadingBarModule { }
La cliente me dit
ERROR in SP21LoadingBarModule is not an NgModule
S'il vous plaît noter: Si je prends le code et le mettre dans mon projet, il fonctionne bien. Mais dès que je retire le module (et le composant) de mon projet et le mets dans un paquet npm, je reçois cette erreur.
Angular est utilisé dans 2.3.1, Angular CLI 1.0.0-beta.24, TypeScript 2.0.10
La solution finale:
Vous devez compiler votre bibliothèque à l'aide du compilateur Ahead-Of-Time (ngc). Cela ajoutera des métadonnées qui vont au projet qui inclut la bibliothèque pour le lire.
Veuillez consulter les liens suivants:
https://angular.io/docs/ts/latest/cookbook/aot-compiler.htmlhttps://medium.com/@cyrilletuzi/how-to-build-and-publish -an-angular-module-7ad19c0b4464 # .9y88ipdk7
Vous devez utiliser ngc
(@ angular/compiler-cli) pour compiler votre bibliothèque, par opposition à utiliser tsc
directement. Est-ce le cas pour vous?
J'ai passé 2 jours sur ce problème. Ajouter
"angularCompilerOptions": {
"skipTemplateCodegen": true
}
à votre tsconfig.json
et il créera tous les fichiers de métadonnées nécessaires. Ça marche pour moi.
Cela fonctionne en utilisant les dépendances suivantes:
{
"dependencies": {
"@angular/common": "^2.3.1",
"@angular/compiler": "^2.3.1",
"@angular/core": "^2.3.1",
"@angular/forms": "^2.3.1",
"@angular/http": "^2.3.1",
"@angular/material": "^2.0.0-beta.0",
"@angular/platform-browser": "^2.3.1",
"@angular/platform-browser-dynamic": "^2.3.1",
"@angular/router": "^3.3.1",
"@angular2-material/button": "^2.0.0-alpha.8-2",
"@angular2-material/card": "^2.0.0-alpha.8-2",
"@angular2-material/checkbox": "^2.0.0-alpha.8-2",
"@angular2-material/core": "^2.0.0-alpha.8-2",
"@angular2-material/icon": "^2.0.0-alpha.8-2",
"@angular2-material/radio": "^2.0.0-alpha.8-2",
"@angular2-material/slider": "^2.0.0-alpha.8-2",
"@angular2-material/tooltip": "^2.0.0-alpha.8-2",
"@types/google-maps": "3.1.28",
"angular-sample-module": "^0.1.2",
"angular2-highcharts": "^0.3.3",
"atob": "^2.0.3",
"autopulous-xdom": "^1.0.4",
"bootstrap": "^3.3.7",
"btoa": "^1.1.2",
"core-js": "^2.4.1",
"hammerjs": "^2.0.8",
"highcharts": "^5.0.0",
"jszip": "^3.1.3",
"ng2-bootstrap": "^1.1.16-9",
"primeng": "^1.0.1",
"rxjs": "^5.0.1",
"ts-helpers": "^1.1.1",
"xml2js": "0.4.17",
"xml2js-es6-promise": "1.1.1",
"zone.js": "^0.7.2" }, "devDependencies": {
"@angular/compiler-cli": "^2.3.1",
"@types/hammerjs": "^2.0.33",
"@types/jasmine": "2.5.38",
"@types/jszip": "0.0.31",
"@types/node": "^6.0.62",
"@types/pako": "^0.2.31",
"@types/xml2js": "0.0.32",
**"angular-cli": "1.0.0-beta.21",**
"angular-ide": "^0.9.10",
"codelyzer": "~2.0.0-beta.1",
"jasmine-core": "2.5.2",
"jasmine-spec-reporter": "2.5.0",
"karma": "1.2.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-remap-istanbul": "^0.2.1",
"protractor": "~4.0.13",
"ts-node": "1.2.1",
"tslint": "^4.0.2",
"TypeScript": "~2.0.3" }
}
Je dirais que le problème concerne les dernières versions de la CLI Angular. De plus, le projet dans lequel le module HelloWorld est défini (la bibliothèque) n'est pas construit à l'aide de la CLI Angular. Je l'ai créé à partir de l'exemple suivant: https://www.npmjs.com/package/angular-sample-module
Néanmoins, le message the "is not a NgModule" apparaît lorsque les versions de Angular de la CLI sont plus volumineuses que [email protected]