JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.10/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.10/angular-sanitize.min.js"></script>
<script src="https://textalk.github.io/angular-schema-form/bower_components/tv4/tv4.js"></script>
<script src="https://textalk.github.io/angular-schema-form/bower_components/objectpath/lib/ObjectPath.js"></script>
<script src="https://textalk.github.io/angular-schema-form/dist/schema-form.min.js"></script>
<script src="https://textalk.github.io/angular-schema-form/dist/bootstrap-decorator.min.js"></script>
<body ng-app="test">
  <div ng-controller="FormController">
    <form name="myForm" sf-schema="schema" sf-form="form" sf-model="model" ng-submit="onSubmit(myForm)" sf-options="{ formDefaults: { ngModelOptions: { allowInvalid: true } }}"></form>
  </div>
</body>

CSS

.form-group {
  border: 1px solid;
  margin-bottom: 10px;
}

.has-error {
  border-color: red;
}

.has-success {
  border-color: green;
}

JavaScript

var app = angular.module("test", ["schemaForm"]);
app.controller("FormController", function($scope) {
  $scope.validateUnique = function(value) {
    console.log('running validation');
    var sameName = $scope.model.NoDuplicate.filter(function(item) {
      return item.key === value;
    });
    return sameName.length < 2;
  }
  $scope.schema = {
    type: "object",
    properties: {
      NoDuplicate: {
        type: 'array',
        items: {
          type: 'object',
          properties: {
            key: {
              type: 'string',
            }
          }
        }
      }
    }
  };

  $scope.form = [{
    type: 'fieldset',
    title: 'Items unique',
    items: [{
      key: 'NoDuplicate',
      type: 'array',
      add: 'Add item',
      items: [{
        key: 'NoDuplicate[].key',
        placeholder: 'Enter property name',
        validationMessage: {
          'unique': 'Key must be unique'
        },
        $validators: {
          unique: $scope.validateUnique
        }
      }]
    }]
  }, {
    type: "submit",
    title: "Save"
  }];

  $scope.model = {};

  $scope.onSubmit = function(form) {
    console.log('submit');
    // First we broadcast an event so all fields validate themselves
    $scope.$broadcast('schemaFormValidate');
    if (form.$valid) {
      console.log('valid');
    } else {
      console.log('invalid but no other error rendered');
    }
  }
});