Кутовий 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
Ви зможете використовувати його для всіх компонентів.
EDIT для кутових 4:
Для Angular 4 нова концепція - Injection Token & Opaque маркер застаріла в Angular 4.
Інжекційний маркер Додає функціональні можливості поверх непрозорих жетонів, він дозволяє приєднувати інформацію про тип до маркера через generics TypeScript, а також маркери ін'єкції, усуває необхідність додавання @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!
]
}
]
Токени для ін'єкцій розроблені логічно поверх непрозорих жетонів, а маркери Opaque застарілі в куті 4.
export
ключове слово ранішеclass
, а такожpublic static
передreadonly
ключовим словом. Дивіться тут: stackoverflow.com/a/22993349