I would reset the scope variables here too, chrEvent = null and layerColor = null.  The html is conditioned on ng-show="chrEvent..." so if an Angular event causes that part of the DOM to be reprocessed, the modal could wind up showing again accidentally.

var scope = this.$scope;
var closeModal = function(closeEvent) {
  ...
  modal.dialog('close');
  scope.chrEvent = null;
  scope.layerColor = null;
}