2016-09-02 2 views
0

У меня есть следующий класс TSAngular2 DI доступ к статическим свойствам

import {Injectable} from '@ angle/core';

@Injectable() 
export class Config { 

    /** 
    * [AuthServiceUrl description] 
    * @type {string} 
    */ 
    static AuthServiceUrl: string = 'http://localhost:3000'; 
} 

Обратите внимание на AuthServiceUrl статична. Как я могу получить доступ к этой недвижимости в рамках Angular2s DI, если у меня есть что-то вроде этого

constructor(private config: Config) 

Как мне получить доступ к этому. Плюс, если я хочу создать класс Config Singleton, как это сделать в Angular2?

+0

Статическое свойство несколько поражает цель DI. Есть ли причина, почему она должна быть статичной? –

ответ

0

Чтобы объявить конфигурационную переменную и использовать ее везде, где вы можете объявить непрозрачный токен, как описано в разделе https://angular.io/docs/ts/latest/cookbook/dependency-injection.html#!#opaque-token.

Объявляет config интерфейс и интерфейс поставщика такой же, как показано ниже:

=> config.ts

export interface Config { 
    apiEndpoint: string; 
} 

export const CONFIG: Config = { 
    apiEndpoint : 'http://api.url.com' 
}; 

=> config.provider.ts

import { OpaqueToken } from '@angular/core'; 
export let APP_CONFIG = new OpaqueToken('app.config'); 

Используйте его в какой-то общий модуль как указано ниже:

=> shared.module.ts

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

import { CONFIG } from './config'; 
import { APP_CONFIG } from './config.provider'; 

@NgModule({ 
    providers : [ 
    { 
     provide : APP_CONFIG, 
     useValue: CONFIG 
    } 
    ] 
}) 
export class SharedModule {} 
Смежные вопросы