var Select2Cascade = (function() {
    var afterActions = [];
    this.then = function(callback) {
      afterActions.push(callback);
      return this;
    };

    function _set({parent, child, url, field, select2Options = {}, field_id = null, ordering = false}={}) {
      parent.select2(select2Options).on("change", function(e) {
        child.prop("disabled", true);
        var _this = this;
        $.getJSON(url.replace(':parentId:', $(this).val()), function(items) {
          items = _.orderBy(items, field, 'asc');
          var newOptions = '<option value>-- Selecione --</option>';
          for (var id in items) {
            const item_field = items[id][field];
            let val_field = item_field;
            if (field_id)
              val_field = items[id][field_id];
            newOptions += '<option value="' + val_field + '">' + item_field + '</option>';
          }

          child.select2('destroy').html(newOptions).prop("disabled", false).select2(select2Options);

          afterActions.forEach(function(callback) {
            callback(parent, child, items);
          });
        });
      });
    }
    return {
        set: _set
    };
}());

@@ -364,16 +364,88 @@
  true);%0A
+        child.trigger(%7B%0A          type:%22changeOptionsStart%22%0A        %7D);%0A
         
@@ -590,16 +590,46 @@
 'asc');%0A
+          var itens_mod = %5B%5D;%0A
         
@@ -681,32 +681,73 @@
 e --%3C/option%3E';%0A
+          var iten_default = newOptions;%0A
           for (v
@@ -1009,32 +1009,93 @@
  + '%3C/option%3E';%0A
+            itens_mod.push(%7Bid:val_field, text:item_field%7D);%0A
           %7D%0A%0A   
@@ -1191,16 +1191,159 @@
 ptions);
+%0A          child.trigger(%7B%0A            type:%22changeOptions%22,%0A            itens: itens_mod,%0A            iten_default: iten_default%0A          %7D);
 %0A%0A      
@@ -1454,24 +1454,25 @@
         %7D);%0A
+%0A
       %7D);%0A  
@@ -1465,24 +1465,370 @@
 %0A%0A      %7D);%0A
+      var selectedChild = child.val();%0A      child.find('option').remove();%0A      child.trigger(%7B%0A        type:%22removeOptions%22,%0A      %7D);%0A%0A      if (parent.val())%7B%0A        parent.change();%0A        if(selectedChild)%7B%0A          child.one('changeOptions', function () %7B%0A            child.val(selectedChild).change();%0A          %7D);%0A        %7D%0A      %7D%0A
     %7D%0A    re

Update select2cascade.js