Soy nuevo en angular y trato de crear un filtro personalizado que requiere un servicio. Seguí la respuesta aquí https://stackoverflow.com/a/43506252/15817005 . Resolvió mi problema parcialmente.
Filtro de registro
angular.module('filters',[]).filter('dataFormat',['studentService', dataFormatFilter])Mi fábrica de filtros y función de filtro.
export function dataFormatFilter(studentService){ console.log(studentService); // Having access here return dataFormatFunction; } function dataFormatFunction(name){ // All the formatting logic //Need properties from studentService in this function. }Puedo acceder a las propiedades de StudentService en dataFormatFilter (función de fábrica). ¿Hay alguna manera de obtenerlo en dataFormatFunction.
Todas las soluciones que he visto usan dataFormatFunction dentro de la propia fábrica dataFormatFilter . Pero no puedo seguir de esta manera.
¡Gracias!
Lo que parece que necesita es devolver una función de flecha que mantendrá el cierre de su función de filtro para que pueda usar las dependencias sin tener que pasarlas. Escribí este plunkr para demostrar.
Siendo la parte crítica:
const dataFormatFilter = function (studentService) { return (name) => { return myReusableFunction(studentService, name); } } app.filter('dataFormat',['studentService', dataFormatFilter]);Tenga en cuenta que el valor devuelto para la función es una función de flecha. Esta no es la única forma de lograr lo que está intentando, pero debería ser la más simple.