Better way of field transformation in Angular-Formly.
meteor add wieldo:angular-formly-transformer
npm install angular-formly-transformer
bower install angular-formly-transformer
angular.module('myApp', [
'formly',
'formlyTransformer'
])
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) {
// ...
});
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.
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
}