Je commence tout juste avec le tutoriel de base pour Angular, mais je suis confronté à un petit problème de compilation.
Je suis le tutoriel sur le site Web de Angular. Je suis coincé avec la partie injection de dépendance car il ne veut pas compiler.
Dans le tutoriel, ils demandent de créer un service avec:
ng generate service hero
Dans ce service généré, vous avez un décorateur comme celui-ci:
@Injectable()
Ensuite, ils demandent d'ajouter un paramètre à ce décorateur comme ceci:
@Injectable({
providedIn: 'root'
})
Lorsque j'essaie de le faire, j'ai une erreur TypeScript qui me dit:
erreur TS2554: 0 arguments attendus, mais 1. Les versions que j'utilise sont celles-ci:
Angular CLI: 1.7.4
Node: 9.5.0
OS: win32 x64
Angular: 5.2.10
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
@angular/cli: 1.7.4
@angular-devkit/build-optimizer: 0.3.2
@angular-devkit/core: 0.3.2
@angular-devkit/schematics: 0.3.2
@ngtools/json-schema: 1.2.0
@ngtools/webpack: 1.10.2
@schematics/angular: 0.3.2
@schematics/package-update: 0.3.2
TypeScript: 2.5.3
webpack: 3.11.0
Une idée pourquoi il n'accepte pas le paramètre?
Merci d'avance !
Ceci est une nouvelle fonctionnalité dans Angular 6.
@Injectable({
providedIn: 'root'
})
Vous avez deux options:
1) Reportez-vous à la documentation Angular 5. (Comme @ r-richards note - changez la version de la documentation en v5 dans le menu déroulant au bas de la liste de navigation de gauche.)
2) Mettez à niveau votre projet à Angular 6 pour résoudre le problème.
Suivez le guide officiel de mise à niveau Angular.
Vous allez remplir un court formulaire en sélectionnant la version de Angular sur laquelle vous vous trouvez et la version à mettre à niveau. Il vous montre ensuite la liste des étapes à suivre pour effectuer la mise à niveau. Vous devez suivre ce guide pour toutes les mises à niveau. (Merci de bien vouloir voter avant de partir) :)
Voici quelques notes que j'ai prises lors de la mise à niveau de Angular 5 à Angular 6.
Votre kilométrage peut varier en fonction de votre configuration. J'ai lié à un couple d'articles ci-dessous qui m'a aidé.
Mettre à jour npm (Node Package Manager)
npm install npm@latest -g
Noeud Upgarde
Pour les utilisateurs Windows et mac, la méthode la plus simple consiste à utiliser l'installateur officiel Node. Ou consultez l'article ci-dessous pour linux/unix.
https://nodejs.org/en/download/
Upgarde Angular CLI globalement et localement
npm install -g @angular/cli
npm install @angular/cli
Mettre à jour package.json
ng update @angular/cli
Update @ Angular/Core
ng update @angular/core
Mettre à jour Angular Matériau si vous l'utilisez
ng update @angular/material
Recherchez d'autres paquets pouvant nécessiter une mise à niveau
npm outdated
Mettre à jour tous les paquets obsolètes
npm update
Ou pour mettre à jour un paquet spécifique
npm update <package name>
Vous devrez peut-être convertir le fichier angular-cli.json en angular.json.
ng update @angular/cli --migrate-only --from=1.7.4
Références:
Mise à niveau du nœud
http://www.hostingadvice.com/how-to/update-node-js-latest-version/
Mise à niveau angulaire
https://vitalflux.com/upgrade-angular-5-app-angular-6/
Autres étapes de dépannage
J'ai également eu ce problème et je l'ai résolu, y compris le nom du service de classe dans "Fournisseurs" dans app.module.ts.
comme ça:
@NgModule({
declarations:[
],
imports:[
CommonModule,
HttpClientModule
],
exports:[
],
providers: [
PostListService
]
})