Угловой 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:
Для угловых 4 новой концепции Injection Токен & Непрозрачной лексемы Устаревший в угловых 4.
Injection Токен добавляет функциональные возможности поверх непрозрачной лексем, позволяет прикрепить тип информации о маркере через машинопись дженериков, плюс Injection лексем, устраняет необходимость добавления @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.
Значит, вам не нужна константа или что-то правильное? – Jackie
Чтобы получить доступ к свойствам вне класса, вам нужно добавить ключевое слово 'export' перед' class', а также 'public static' перед ключевым словом' readonly'. См. Здесь: http://stackoverflow.com/a/22993349 – cbros2008
Вопрос. Было ли неудобно, почему вам нужно имя класса для использования этого свойства readOnly внутри самого класса? 'MyClass.myReadonlyProperty' –