2017-02-15 1 views
0

Перемещение некоторой логики JavaScript в приложение Angular 2. Часть его включает в себя встроенную библиотеку функций «форматирования» [они делают больше, чем просто форматирование, поэтому каналы не являются опцией] В настоящее время они передаются по имени (строка), а функция приема использует окно [fName] для преобразования их в функция ссылка.Угловой 2 Преобразование имени функции в функцию Reference

Таким образом, есть функция форматировщик:

var tickPositionerYMD = function() { ticks=[]; ... complex logic ... return ticks; } 

И функция сборки:

build(x, y, formatterName) { 
... 
formatter = window[formatterName]; 
... 
} 

И билд вызывалась с определенным форматировщиком:

build(xData, yData, 'tickPositionerYMD'); 

В JavaScript окне [] используется для создания ссылки на функцию.

Вопрос ... какой лучший способ сделать это в компоненте Angular 2? Вы видели один подход, когда создается сервис со ссылкой на окно ... это передается через DI.

Второй подход заключается в создании фабричной функции, которая дает имя, возвращает функцию.

Учитывая эти варианты, я склонен идти с заводской функцией. Будучи новичком в Угловом, мне было интересно, не хватаюсь ли мне лучше.

ответ

0

Вы должны использовать Угловые услуги.

Каждая услуга является одноэлементной, поэтому, когда вы вводите ее в свои компоненты, все референции будут пинтовать в одном экземпляре.

Так что, когда вы определяете форматтеры Int вашей службы, вы должны подвергать любой метод getFormatter(formatterName) или Карту Форматтеры и использовать его как это:

// method: 
let formatter = formatterService.getFormatter('myForm'); 

// Map: 
let anotherFormatter = formatterService.formatters['myForm'] 

Только не забывайте, что вы впрыснуть услуги не экземпляр.

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