2016-08-02 106 views
2

提供在RC4中被棄用。在Angular 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

It Component I should use: 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'; } 
} 

包括(導入類和使用變量)在應用程序中需要的地方。

+0

我知道這個解決方案,但我想用DI =) – Illorian

+0

因爲它的變量將用於其他代表並用作子模塊 – Illorian

+0

@Illorian你有沒有找到一種方法?我試圖做同樣的事情(子模塊的常量) – omer

相關問題