node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »

angular-formly-transformer

FormlyTransformer

GitHub version Build Status Coverage Status Codacy Badge Coverage Status

Better way of field transformation in Angular-Formly.

Install

meteor

meteor add wieldo:angular-formly-transformer

npm

npm install angular-formly-transformer

bower

bower install angular-formly-transformer

Getting Started

angular.module('myApp', [
    'formly',
    'formlyTransformer'
  ])

formlyTransformer service

see formlyTransformer API

How to use it

Register transformer

Each transformer has four arguments: fields, model, formOptions, and form.

See fieldTransform in formlyConfig for details.

Transformer is basically the same as fieldTransform method. formlyTransform service just wraps all functions into one place.

formlyTransformer.register(function(fields, model, form, formOptions) {
    // ... 
});

Special space in formly field configuration (formlyconfig)

formlyTransformer creates property with "transformers" key and empty object as value.

Special space is removed after all the transformers are executed.

So basically, you can put there all your transformation methods which are based on custom property.

Example

angular.module('myAppName', [
    'formly',
    'formlyTransformer'
  ])
  .run(runApp)
  .controller('demoCtrl', demoCtrl);
  
  function runApp(formlyTransformer) {
        // label upperCaseLabel transformer 
        formlyTransformer.register(function(fields) {
            fields.forEach((field) => {
                if(field.transformers.upperCaseLabel && field.templateOptions && field.templateOptions.label) {
                    field.templateOptions.label = field.templateOptions.label.toUpperCase();
                }
            });
        });
  }
  
  function demoCtrl(formlyTransformer) {
        var vm = this;
        
        vm.fields = [
            key: 'firstName',
            type: 'input',
            templateOptions: {
                label: 'First name'
            },
            transformers: {
                upperCaseLabel: true
            }
        ];
        
        console.log(vm.fields[0].templateOptions.label); // FIRST NAME 
  }

Bitdeli Badge