在Angular中,依赖注入(Dependency Injection,简称DI)是通过Angular提供的注入器(Injector)来实现的。注入器负责创建和管理各种依赖对象,并将它们注入到需要使用它们的组件中。
下面是一个简单的示例,演示了如何在Angular中使用依赖注入:
import { Injectable } from '@angular/core';
@Injectable()
export class UserService {
getUsers() {
return ['User1', 'User2', 'User3'];
}
}
import { Component } from '@angular/core';
import { UserService } from './user.service';
@Component({
selector: 'app-users',
template: `
Users:
- {{ user }}
`,
})
export class UsersComponent {
users: string[];
constructor(private userService: UserService) {
this.users = this.userService.getUsers();
}
}
在上述示例中,UserService被标记为@Injectable(),以便Angular知道该类可以被注入。在UsersComponent的构造函数中,我们将UserService作为参数并添加了private修饰符,这告诉Angular将UserService注入到UsersComponent中。
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UsersComponent } from './users.component';
import { UserService } from './user.service';
@NgModule({
imports: [BrowserModule],
declarations: [UsersComponent],
providers: [UserService], // 提供UserService
bootstrap: [UsersComponent],
})
export class AppModule {}
通过将UserService添加到providers数组中,我们告诉Angular在整个应用程序中提供UserService的实例。
这就是Angular中依赖注入的基本原理。当组件被创建时,Angular会检查构造函数的参数类型,并尝试为其实例化相应的依赖项。如果依赖项本身也有依赖项,Angular会递归地解析它们,并将它们注入到正确的位置。
通过使用依赖注入,我们可以实现松耦合、可重用和可测试的代码。
下一篇:Angular库中的意外值