Angular 1.5 component demo

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script>
<div ng-app="demoApp" ng-controller="MainController as mainCtrl">
  <foo-rock ng-model="obj.text"></foo-rock>
</div>

JavaScript

angular.module('demoApp', [])
	.controller('MainController', function MainController() {
  	this.obj = { text: 'default' }
  })
  .component("fooRock", {
    template: '<input type="text" ng-model="" ng-change=""/>',
    require: {
      ngModelCtrl: "ngModel"
    },
    bindings: {
      ngModel: "<"
    },
    controller: function() {
    	const $ctrl = this;
      
      this.$onInit = () => {
      
        $ctrl.ngModelCtrl.$parsers.push(value => value.split(',').filter(v => v));

        ngModelCtrl.$validators.pubBlacklistStoreIdValidation = modelValue => {
          return ngModelCtrl.$isEmpty(modelValue) || $ctrl.validate(modelValue);
        };

      };
      
      $ctrl.validate();
    }
  });