angular依赖注入

本文介绍了Angular中的依赖注入(DI)机制,包括如何通过`@Injectable`装饰器创建可注入服务,以及在组件、模块和应用级别提供服务。在构造函数中注入依赖项,并在服务中注入其他服务。DI帮助优化应用程序,实现服务的共享和管理,同时也支持Angular的tree-shaking优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

依赖注入DI:

可注入对象:服务(service)

提供依赖项

  • 第一步:添加装饰器
    装饰器@Injectable :此类可以被注入
import { Injectable } from '@angular/core';
@Injectable()
export class xxService{
constructor( ){ }
}
  • 第二步: 提供依赖项

组件级别提供:
使用@Component的provider字段

@Component({
	selector:'XX-list',
	template:'...',
	providers:[xxService]
})
class xxListComponent{}

在组件级别提供注册者,组件的每个新实例都会获得一个新的服务实例。

NgModule级别提供
使用@NgModule的providers,xxService可以用于此NgModule中声明的所有组件、指令、管道

@NgModule({
	declarations:[xxListComponent]
	providers:[xxService]	
})
class xxListModule{}

在应用程序根级别提供
允许将其注入应用程序中的其他类。通过@Injectable的provideIn:‘root’

@Injectable({
	providedIn:'root'
})
class xxCommonService {}

在根级别提供服务,大家会共享一个实例xxCommonService。
@Injectable元数据中的注册提供者(providedIn字段)允许Angular通过从已经编译的程序中山区没用到的服务来优化应用程序,这个过程称作tree-shaking(摇树优化)

注入依赖项

  • 在类的构造函数中声明:
  • 其他方式
@Component({...})
class xxComponent{
	constructor(private service :xxService){}
}

angular发现一个组件依赖于一个服务时,会先检查注入器中是否已经有该服务的实例。如果不存在,注入器就使用注册的提供者创建一个,在服务返回给Angular之前将他添加到注入器中。(官网文档)
请求的服务都解析返回时,angular才使用这些服务实例为参数调用该组件的构造函数。

在服务中注入服务:

形式上与一般注入没有什么区别,

import { Logger } form './logger.service';
@Injectable ({
 	providedIn:'root',
})
export class xxService {
	constructor (private logger: Loger ){  }
	...
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值