2016-08-02 15 views
2

Предоставление устарело в RC4.Предоставить константы в Угловом 2

До этого я мог бы сделать:

provide("API_URL", {useValue: "address"}) 

Я пытаюсь что-то вроде этого:

{ 
    provide: "API_URL", 
    useValue: "address" 
} 

Но это не работает. Я нашел несколько примеров here, но примеров по константам нет.

+0

В ссылке вы предоставили, есть '{обеспечивают: TITLE, useValue: 'Герой месяца'}' – hendrix

+0

Не знаете, как вы используете '{ обеспечивают: "API_URL", useValue: "address" } ', но он должен работать. – estus

+0

@estus, если он работал, я бы его не писал =) – Illorian

ответ

7

Вы должны использовать OpaqueToken класс для этого:

tokens.export.ts

import { OpaqueToken } from '@angular/core'; 

export const API_URL = new OpaqueToken('API_URL'); 
export const OTHER_TOKEN = new OpaqueToken('OTHER_TOKEN'); 

UPDATE - с угловыми 4,0 OpaqueToken устарела, пожалуйста, используйте InjectionToken:

import { InjectionToken } from '@angular/core'; 

export const API_URL = new InjectionToken<string>('API_URL'); 
export const OTHER_TOKEN = new InjectionToken<string>('OTHER_TOKEN'); 

main.ts

{ 
    provide: API_URL, 
    useValue: "address" 
} 
+0

Это компонент Я должен использовать: constructor (@Inject ("API_URL") private apiUrl) {} ? – Illorian

+1

@Illorian '@Inject (API_URL) private apiUrl)'. Переменная 'API_URL' должна быть импортирована. Причина использования непрозрачных жетонов заключается в том, что они уникальны. – estus

+1

Может также хотеть показать 'InjectionToken', поскольку' OpaqueToken' устарел в 4+ – ChrisG

0

Я делал это в моем приложении, как:

export class AppSettings { 
    public static get API_ENDPOINT(): string { return 'http://localhost:3003'; } 
} 

Include (импортировать класс и использовать переменную) его в приложении, где это необходимо.

+0

Я знаю это решение, но я хочу использовать DI =) – Illorian

+0

Потому что его переменная будет использоваться в других повторениях и использоваться в качестве подмодуля – Illorian

+0

@Illorian вы нашли способ? Я пытаюсь сделать то же самое (подмодуль констант) – omer