Заинжектить сервис в обычный класс
Имеется обычный класс TypeScript. Но при создании объекта этого типа необходимо получить доступ к глобальным настройкам приложения, реализуемый через доступ к сервису $SETTINGS. Как это делается в обычных компонентах Angular мне понятно, а вот как запихнуть сервис $SETTINGS в обычный класс -- не нашел. Или не осилил ответа. Помогите!
Пример кода: export class User implements IUserWithPosition{ id: number; login: string; email: string; img: string; full_name: string; private img_url = ''; private default_img = ''; constructor( private data: IUserWithPosition, private $SETTINGS: GlobalVars // ?????????????????? ){ this.id = data.id; this.full_name = data.full_name || ''; this.login = data.login || ''; this.email = data.email || ''; this.img = data.img || ''; if(this.login && this.img && this.login.length > 0 && this.img.length > 0){ this.img_url = `${$SETTINGS.get(`urlUserImage`)}${this.login.charAt(0).toLowerCase()}/`; }else{ this.img_url = $SETTINGS.get(`urlUserImage`); this.default_img = $SETTINGS.get('urlDefaultUserImage'); } } |
если долго не думать
private default_img = ''; private $SETTINGS = new GlobalVars(); constructor( private data: IUserWithPosition ) Либо инжектить этот сервис в тот кусок ангуляр-кода, в котором вызывается new User(). Ну и прокидывать ссылку соответственно в конструктор User. |
[quote=destus;496006]если долго не думать
private $SETTINGS = new GlobalVars(); Такая конструкция в итоге создаст ссылку на синглтон и все будет хорошо? Как-то даже не подумал о таком варианте. Попробую. Спасибо. |
Нет, такая конструкция создаст новый объекта GlobalVars. Если нужна именно ссылка, то вариант №2.
|
Часовой пояс GMT +3, время: 19:12. |