我刚开始使用Angular的基础教程,但遇到一个小的编译问题。
我正在关注Angular网站上的教程。我坚持依赖注入(inject)部分,因为它不想编译。
在教程中,他们要求使用以下命令创建服务:
ng generate service hero
在此生成的服务中,您有一个这样的装饰器:
@Injectable()
然后他们要求像这样向装饰器添加参数:
@Injectable({
providedIn: 'root'
})
当我尝试这样做时,我遇到TypeScript错误:
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官方升级指南。
您将填写一份简短的表格,选择要使用的Angular版本以及要升级到的版本。然后,它将显示执行升级所需采取的步骤的列表。您应该按照本指南进行所有升级。
https://update.angular.io/
这是我从Angular 5升级到Angular 6时要注意的一些事项。
您的里程可能会因您的配置而异。我链接到下面对我有帮助的几篇文章。
更新npm(节点程序包管理器)
npm install npm@latest -g
Upgarde节点对于Windows和Mac用户,最简单的方法是使用官方的Node安装程序。或参见下面有关linux / unix的文章。
https://nodejs.org/en/download/
全局和本地Upgarde Angular CLInpm install -g @angular/cli
npm install @angular/cli
更新package.jsonng update @angular/cli
更新@ Angular / Coreng update @angular/core
使用时更新Angular Material ng update @angular/material
检查其他可能需要升级的软件包npm outdated
更新所有过时的软件包npm update
或升级特定套件npm update <package name>
您可能需要将angular-cli.json文件转换为angular.jsonng 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