2016-07-28 5 views
4

Есть ли способ установить переменную/константу области приложения, которая может использоваться всеми компонентами? Если да, где объявить его и как ссылаться на него в компонентах?Параметры области видимости области Angular2

То, что я могу думать о том, чтобы

export var SharedValues = { 
    Title: "aaaaa", 
    Something: "bbbbb" 
} 

затем импортировать его в компонентах и ​​использовать его.

Могу ли я объявить что-то в main.ts, а затем прямо ссылаться на него или что-то подобное?

ответ

3

Вы можете упаковать это в класс и использовать его как услугу. Например,

@Injectable() 
export class SharedValues { 
    public Title = 'aaaaa'; 
    public Something = 'bbbbb'; 
} 

Затем, если вы используете RC5 включить в модуль ...

import { SharedValues } from 'some/path/shared-values.service'; 

@NgModule({ 
    // declarations, imports, bootstrap... 

    providers: [ 
     // your other providers 
     SharedValues, 
    ] 
}) export class AppModule {} 

Если вы используете RC4 или предыдущий добавить в свой бутстрапе ...

import { SharedValues } from 'some/path/shared-values.service'; 

bootstrap(AppComponent, [ 
    // ... 
    SharedValues, 
]); 

И везде, где вы хотите использовать его ...

import { SharedValues } from 'some/path/shared-values.service'; 

// or wherever you want to use the variables 
@Component({ 
    // ... 
}) export class SomeComponent { 
    constructor(private shared: SharedValues) { 
     console.log(this.shared.Title, this.shared.Something); 
    } 
} 
+0

Спасибо, это Синтаксис @NgModule работает только для RC5? – Shawn

+0

Да, я отредактирую ответ, чтобы включить RC4 – jcolemang

Смежные вопросы