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
您將能夠跨越每一個組件都使用它。
編輯角4:
角形4的新概念是注射令牌&不透明令牌在角4棄用。
注射令牌添加上不透明令牌的頂部的功能,它允許連接上經由打字稿泛型,加註射令牌的令牌類型信息,移除添加@Inject
示例代碼
角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
]
}
]
角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!
]
}
]
個
注射令牌上的不透明令牌的頂部設計合理&不透明令牌在角4
所以你不需要一個const或任何正確的? – Jackie
要從類外部訪問屬性,需要在'readonly'關鍵字之前的'class'和'public static'之前添加'export'關鍵字。看到這裏:http://stackoverflow.com/a/22993349 – cbros2008
問題。難道你爲什麼需要類名來在類內使用readOnly屬性? 'MyClass.myReadonlyProperty' –