angular - Angular Injectable 装饰器 - 预期 0 个参数,但得到 1 个
问题描述
我刚刚开始学习 Angular 的基础教程,但我面临一个小的编译问题。
我正在关注 Angular 网站上的教程。我坚持依赖注入部分,因为它不想编译。
在教程中,他们要求创建一个服务:
ng generate service hero
在这个生成的服务中,你有一个这样的装饰器:
@Injectable()
然后他们要求像这样向该装饰器添加一个参数:
@Injectable({
providedIn: 'root'
})
当我尝试这样做时,我有一个 TypeScript 错误告诉我:
error TS2554: Expected 0 arguments, but got 1. 我使用的版本是那些:
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
知道为什么它不接受参数吗?
提前致谢 !
解决方案
这是 Angular 6 中的一个新特性。
@Injectable({
providedIn: 'root'
})
你有两个选择:
请参阅 Angular 5 文档。(正如@r-richards 所说 - 在左侧导航底部的下拉列表中将文档的版本更改为 v5。)
将您的项目升级到 Angular 6 以解决问题
遵循官方 Angular 升级指南。
您将填写一份简短的表格,选择您使用的 Angular 版本以及要升级到的版本。然后它会向您显示执行升级所需的步骤列表。您应该按照本指南进行所有升级。
以下是我在从 Angular 5 升级到 Angular 6 时做的一些笔记。
您的里程可能会因您的配置而异。我链接到下面对我有帮助的几篇文章。
更新 npm(节点包管理器)
npm install npm@latest -g
升级节点
对于 Windows 和 mac 用户,最简单的方法是使用官方 Node 安装程序。或者查看下面关于 linux/unix 的文章。
https://nodejs.org/en/download/
全局和本地升级 Angular CLI
npm install -g @angular/cli
npm install @angular/cli
更新 package.json
ng update @angular/cli
更新@Angular/Core
ng update @angular/core
如果您正在使用它,请更新 Angular Material
ng update @angular/material
检查可能需要升级的其他软件包
npm outdated
更新所有过时的包
npm update
或者升级特定的包
npm update <package name>
您可能需要将 angular-cli.json 文件转换为 angular.json
ng update @angular/cli --migrate-only --from=1.7.4
正如@Sharondio 指出的那样,如果您看到奇怪的现象,此时重新启动您的 IDE 甚至您的整个计算机都不会受到伤害。
参考:
升级节点
http://www.hostingadvice.com/how-to/update-node-js-latest-version/
升级角
https://vitalflux.com/upgrade-angular-5-app-angular-6/
其他故障排除步骤
推荐阅读
- php - 遍历复杂的 json 数组
- c - 在 c x86-64 jit 中将 movsd 从内存移动到 xmm0
- laravel - Laravel 选择具有 GROUP_CONCAT 列的表列
- mysql - 获取客户通话的总费用
- excel - Excel - 仅当当前行中的多个条件匹配时才返回一行中的单元格
- android - 无论如何在固定的屏幕位置显示一个反应原生组件
- node.js - NodeJS 错误:缺少写入权限
- c - c和perl之间的printf区别
- vue.js - 如何让 vue.config.js 和 babel.config.js 一起工作?
- d3.js - 用自定义图像背景可视化网络图的 Javascript 库