Angular 2 提供了一个非常好的特性,称为不透明常量。创建一个类并使用不透明的常量在那里定义所有常量。
import { OpaqueToken } from "@angular/core";
export let APP_CONFIG = new OpaqueToken("my.config");
export interface MyAppConfig {
apiEndpoint: string;
}
export const AppConfig: MyAppConfig = {
apiEndpoint: "http://localhost:8080/api/"
};
将其注入 app.module.ts 中的提供程序
您将能够在每个组件中使用它。
编辑 Angular 4:
对于 Angular 4,新概念是注入令牌和不透明令牌在 Angular 4 中已弃用。
注入令牌在不透明令牌之上添加功能,它允许通过 TypeScript 泛型在令牌上附加类型信息,加上注入令牌,无需添加 @Inject
示例代码
Angular 2 使用不透明令牌
const API_URL = new OpaqueToken('apiUrl'); //no Type Check
providers: [
{
provide: DataService,
useFactory: (http, apiUrl) => {
// create data service
},
deps: [
Http,
new Inject(API_URL) //notice the new Inject
]
}
]
Angular 4 使用注入令牌
const API_URL = new InjectionToken<string>('apiUrl'); // generic defines return value of injector
providers: [
{
provide: DataService,
useFactory: (http, apiUrl) => {
// create data service
},
deps: [
Http,
API_URL // no `new Inject()` needed!
]
}
]
注入令牌在逻辑上是在不透明令牌之上设计的,并且在 Angular 4 中不推荐使用不透明令牌。