# `$filterProvider` (service in module `ng` )

Improve this doc

## Description

Filters are just functions which transform input to an output. However filters need to be Dependency Injected. To achieve this a filter definition consists of a factory function which is annotated with dependencies and is responsible for creating a filter function.

      // Filter registration
      function MyModule($provide, $filterProvider) {
        // create a service to demonstrate injection (not always needed)
        $provide.value('greet', function(name){
          return 'Hello ' + name + '!';
        });

        // register a filter factory which uses the
        // greet service to demonstrate DI.
        $filterProvider.register('greet', function(greet){
          // return the filter function which uses the greet service
          // to generate salutation
          return function(text) {
            // filters need to be forgiving so check input validity
            return text && greet(text) || text;
          };
        });
      }

The filter function is registered with the `$injector` under the filter name suffixe with `Filter`.

      it('should be the same instance', inject(
        function($filterProvider) {
          $filterProvider.register('reverse', function(){
            return ...;
          });
        },
        function($filter, reverseFilter) {
          expect($filter('reverse')).toBe(reverseFilter);
        });

For more information about how angular filters work, and how to create your own filters, see Understanding Angular Filters in the angular Developer Guide.

## Methods

- ### register(name, fn)

  Register filter factory function.

  #### Parameters

  - `name – {String} –`

    Name of the filter.

  - `fn – {function} –`

    The filter factory function which is injectable.