在 Angular 中,我们可以使用依赖注入来获得所需的服务和其他对象。当 Angular 实例化组件时,它会检查传递给构造函数的参数类型,并使用装饰器来标记它们是哪种类型。这些类型信息会被存储在元数据中,并且 Angular 在运行时使用这些元数据来解析依赖项。
下面是一个简单的示例,其中声明了一个服务,并在另一个组件中使用它进行依赖注入:
import { Injectable } from '@angular/core';
@Injectable()
export class MyService {
constructor() { }
// methods and properties
}
import { Component } from '@angular/core';
import { MyService } from 'path/to/my-service';
@Component({
selector: 'my-component',
template: `{{ message }}`
})
export class MyComponent {
message: string;
constructor(private myService: MyService) {
this.message = this.myService.getMessage();
}
}
在此示例中,MyComponent 的构造函数中将 MyService 作为参数进行注入,并将其存储在类中作为属性。Angular 在实例化 MyComponent 时,会检测到构造函数中传递的参数是 MyService 的类型,并将其存储在元数据中,以备后用。然后,Angular 将查找 MyService,并在运行时将其注入到构造函数中。
这是 Angular 依赖注入的一个基本示例,说明了它如何使用类型信息来解析依赖项。