2016-08-02 9 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

Itコンポーネントを使用する必要があります: コンストラクタ(@Inject( "API_URL")private apiUrl){} ? – Illorian

+1

@Illorian '@Inject(API_URL)private apiUrl)'。 'API_URL'変数をインポートする必要があります。不透明なトークンを使用する理由は、それらが一意であるからです。 – estus

+1

「OpaqueToken」が4+で推奨されていないので、 'InjectionToken'を表示したいかもしれません – ChrisG

0

私のような自分のアプリケーションでこれを行っている:

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

が必要なアプリケーションで(クラスをインポートして、変数を使用)、それを含めます。

+0

私はこの解決策を知っていますが、私はDI =を使用したいです。 – Illorian

+0

変数が他の担当者で使用され、サブモジュールとして使用されているため – Illorian

+0

@Illorianは方法を見つけましたか?私は同じこと(定数のサブモジュール)をしようとしています – omer

関連する問題