在Angular中,可以使用注入令牌来指定依赖项的提供者。以下是一个包含代码示例的解决方法:
InjectionToken
类来创建注入令牌。注入令牌是一个唯一的标识符,用于标识依赖项。import { InjectionToken } from '@angular/core';
export const MY_TOKEN = new InjectionToken('myToken');
import { Injectable } from '@angular/core';
import { MY_TOKEN } from './my-token';
@Injectable()
export class MyService {
constructor(@Inject(MY_TOKEN) private myToken: string) {
console.log(myToken);
}
}
providers
数组中提供注入令牌和对应的依赖项。import { NgModule } from '@angular/core';
import { MY_TOKEN } from './my-token';
import { MyService } from './my-service';
@NgModule({
providers: [
{ provide: MY_TOKEN, useValue: 'My Value' },
MyService
]
})
export class MyModule { }
在这个例子中,我们创建了一个注入令牌MY_TOKEN
,然后在MyService
中使用了该注入令牌。在MyModule
中,我们将MY_TOKEN
提供给MyService
,并设置其值为My Value
。这样,当MyService
被注入时,myToken
参数将被设置为My Value
。
需要注意的是,注入令牌和提供者必须在同一个模块中定义。如果注入令牌和提供者在不同的模块中,需要使用forRoot()
方法来传递注入令牌。
import { NgModule } from '@angular/core';
import { MY_TOKEN } from './my-token';
import { MyService } from './my-service';
@NgModule({})
export class MyModule {
static forRoot(myToken: string): ModuleWithProviders {
return {
ngModule: MyModule,
providers: [
{ provide: MY_TOKEN, useValue: myToken },
MyService
]
};
}
}
然后,在根模块中使用forRoot()
方法来传递注入令牌。
@NgModule({
imports: [
MyModule.forRoot('My Value')
]
})
export class AppModule { }
这样,MyService
将使用根模块中提供的注入令牌值。