Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2018, 10:14
Аспирант
Отправить личное сообщение для sniffysko Посмотреть профиль Найти все сообщения от sniffysko
 
Регистрация: 20.10.2009
Сообщений: 48

Заинжектить сервис в обычный класс
Имеется обычный класс 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');
		}
	}
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2018, 12:11
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,154

если долго не думать
private default_img = '';
private $SETTINGS = new GlobalVars();

	constructor(
		private data: IUserWithPosition
	)

Либо инжектить этот сервис в тот кусок ангуляр-кода, в котором вызывается new User(). Ну и прокидывать ссылку соответственно в конструктор User.
Ответить с цитированием
  #3 (permalink)  
Старый 09.10.2018, 12:29
Аспирант
Отправить личное сообщение для sniffysko Посмотреть профиль Найти все сообщения от sniffysko
 
Регистрация: 20.10.2009
Сообщений: 48

[quote=destus;496006]если долго не думать
private $SETTINGS = new GlobalVars();


Такая конструкция в итоге создаст ссылку на синглтон и все будет хорошо? Как-то даже не подумал о таком варианте.

Попробую. Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 09.10.2018, 12:43
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,154

Нет, такая конструкция создаст новый объекта GlobalVars. Если нужна именно ссылка, то вариант №2.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскаите как менять класс у елемента в зависимость от класса другово елемента NirVanea Общие вопросы Javascript 4 10.09.2015 13:51
Изменить класс родительского элемента STyLe Общие вопросы Javascript 1 29.05.2014 19:21
Как удалить класс у соседних элементов housewm Events/DOM/Window 4 11.03.2014 11:29
Сервис сокращения ссылок LinkAC Ваши сайты и скрипты 0 05.01.2013 17:39
Jquery немогу установить класс! shureg Общие вопросы Javascript 4 26.10.2010 13:37