Angular英雄指南教程-遇到的坑-服务注入

首先给出Angular的入门示例
英雄指南教程 的链接地址(这个入门级 app 包含很多数据驱动的应用所需的特性。 它需要获取并显示英雄的列表、编辑所选英雄的详情,并且在英雄数据的不同视图之间导航。)

https://www.angular.cn/tutorial

我的Angular CLI信息:

Angular CLI: 1.7.4
Node: 8.9.3
OS: win32 x64
Angular:
...

在按照官网说给的示例在创建服务后并没有下面的这个:providedIn: ‘root’,而且也不能把它写在@Injectable注解里面,vscode编辑器会提示@Injectable不接收任何参数。

@Injectable({
  providedIn: 'root',
})

这里写图片描述

直接运行会报找不到服务提供者 [NullInjectorError: No provider for HeroService!]:
这里写图片描述

百度了网上各大神的解决方法,找到一个是在所需要该服务的模板中的@Component注解中加入 providers:[] 属性进行服务注入,如下图。如果想要在其它服务中调用自己的服务,可以在全局的app.module.ts中的@NgModule标签加入providers:[] 注入服务。

关于服务中调用服务这个问题,参考同事的说法可以有下面2个方法:
方法一:是在一个全局的app.module.ts中进行注册(如上文所述);
方法二:新建一个module,在新建的module里面注册需要调用的(子)服务之后在全局module中引入这个新建的module即可(因为module只能被module引用,所以不能在服务中引用module)。

@Component({
  selector: 'app-messages',
  templateUrl: './messages.component.html',
  styleUrls: ['./messages.component.css'],
  //组件中注入服务(还可以在全局模块(app.module.ts)中注入服务)
  providers:[
    MessageService
  ]
})

这里写图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值