Angular Injectable 装饰器 - 预期 0 个参数但得到 1 个

标签 angular typescript angular-cli

我刚刚开始学习 Angular 的基础教程,但我遇到了一个小的编译问题。

我正在按照 Angular 网站上的教程进行操作。我被依赖注入(inject)部分困住了,因为它不想编译。

在教程中,他们要求创建一个服务:

ng generate service hero

在这个生成的服务中,你有一个像这样的装饰器:

@Injectable()

然后他们要求像这样向装饰器添加一个参数:

@Injectable({
  providedIn: 'root'
})

当我尝试这样做时,我收到一个 TypeScript 错误提示:

error TS2554: Expected 0 arguments, but got 1. The versions I use are those ones :

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'
})

你有两个选择:

  1. 请参阅 Angular 5 文档。 (正如@r-richards 所指出的那样——在左侧导航栏底部的下拉列表中将文档版本更改为 v5。)

  2. 将您的项目升级到 Angular 6 以解决问题

遵循官方 Angular 升级指南。

您将填写一个简短的表格,选择您使用的 Angular 版本以及要升级到的版本。然后,它会向您显示执行升级所需采取的必要步骤列表。您应该按照本指南进行所有升级。

https://update.angular.io/

enter image description here

这是我在从 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/

升级 Angular

https://vitalflux.com/upgrade-angular-5-app-angular-6/

其他故障排除步骤

https://stackoverflow.com/a/49811824/151325

关于Angular Injectable 装饰器 - 预期 0 个参数但得到 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50307628/

相关文章:

jquery - 一起使用 Angular2 + JQuery 怎么样?

Angular 4 构建错误 : Error encountered resolving symbol values statically

Angular 2 无法读取 null 的属性 'config'

Angular 5 应用程序未注册服务 worker

Angular2 滚动到具有 *ngIf 的元素

javascript - 无法为身份验证系统以 Angular 8 导入 firestore 和 firebase

android - ionic - 未捕获的语法错误 : Unexpected token On APK

typescript - 在 typescript 中导入库的不同方式有什么区别?

javascript - 当用户单击/移出文本框时删除错误验证消息

typescript - 将堆栈资源值传递给另一个帐户