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で廃止されました。
export
前に、キーワードをclass
だけでなく、public static
前readonly
のキーワード。こちらをご覧ください:stackoverflow.com/a/22993349