Angular 2 Zapewnia bardzo miłą funkcję o nazwie Stałe nieprzezroczyste. Utwórz klasę i Zdefiniuj wszystkie stałe za pomocą nieprzezroczystych stałych.
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/"
};
Wstrzyknij go dostawcom w app.module.ts
Będziesz mógł używać go we wszystkich komponentach.
EDYCJA dla Angular 4:
W przypadku Angulara 4 nowa koncepcja to Injection Token, a nieprzezroczysty token jest przestarzały w Angular 4.
Token wtrysku Dodaje funkcje na nieprzezroczyste tokeny, pozwala dołączyć informacje o typie do tokena za pomocą ogólnych znaków TypeScript oraz tokenów wtrysku, eliminuje potrzebę dodawania @Inject
Przykładowy kod
Angular 2 Korzystanie z nieprzezroczystych tokenów
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 Korzystanie z żetonów wtryskowych
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!
]
}
]
Żetony wtrysku są logicznie zaprojektowane na żetonach nieprzezroczystych, a żetony nieprzezroczyste są nieaktualne w Angular 4.
export
słowo kluczowe zarówno przed,class
jak ipublic static
przedreadonly
słowem kluczowym. Zobacz tutaj: stackoverflow.com/a/22993349