Javascript $uibModal DISCLISE问题。then不是函数

Javascript $uibModal DISCLISE问题。then不是函数,javascript,angularjs,angular-ui-bootstrap,Javascript,Angularjs,Angular Ui Bootstrap,我正在从angular 1.6.9迁移到angular 1.7.9,当我完成所有工作并检查功能是否仍在工作时,我发现调用函数时出现了一个问题,当我在$uibModal中按下accept按钮时,应该调用该函数。我得到的错误是: TypeError:utils.OpenModel(…)。then不是函数 我已经寻找了一些可能的解决方案,并对它们进行了测试,我实现了不出错,但功能仍然没有实现。我把我的代码贴在这里,想知道是否有人能告诉我发生了什么 我有一个开放模式 utils.service.js 然

我正在从angular 1.6.9迁移到angular 1.7.9,当我完成所有工作并检查功能是否仍在工作时,我发现调用函数时出现了一个问题,当我在$uibModal中按下accept按钮时,应该调用该函数。我得到的错误是:

TypeError:utils.OpenModel(…)。then不是函数

我已经寻找了一些可能的解决方案,并对它们进行了测试,我实现了不出错,但功能仍然没有实现。我把我的代码贴在这里,想知道是否有人能告诉我发生了什么

我有一个开放模式

utils.service.js 然后我有一个组件:

modal.component.js 此外,模式模板具有此页脚和按钮:

modal.html

{{'SHARED.MOD|u ACCEPT'| translate | uppercase}}
{{'SHARED.MOD_CANCEL'| translate | uppercase}}

非常感谢您花时间处理这个问题。我仍在寻找解决方案。

如果API已返回承诺,则无需使用
$q.defer
制作承诺:

 function openModal( body ) {
    var msg = typeof body === "string" ? body : body.message;
    var animation = body.animation === false ? false : true;
    var keyboard = body.keyboard === false ? false : true;
    var bodyTemplate = body.bodyTemplate ?
        "app/components/modal/" + body.bodyTemplate + ".html" :
        undefined;
    ̶v̶a̶r̶ ̶d̶e̶f̶e̶r̶r̶e̶d̶ ̶=̶ ̶$̶q̶.̶d̶e̶f̶e̶r̶(̶)̶;̶

    //...

    var modalInstance = $uibModal
        .open( {

            //...

     } );

    //RETURN the promise 

    return modalInstance.result;

     /* DELETE this
     modalInstance.result.then(
        function () {
            return deferred.resolve();
        },
        function () {
            return deferred.reject();
        }
    );

    return deferred;
    */
}
( function () {
  angular
    .module( 'app' )
    .component( 'modal', {
      templateUrl: 'app/components/modal/modal.html',
      controller: modalController,
      controllerAs: 'vm',
      bindings: {
        resolve: '<',
        close: '&',
        dismiss: '&'
      }
    } );


  modalController.$inject = [ '$translate' ];

  /** @ngInject */
  function modalController( $translate) {
    var vm = this;
    $translate.use( sessionStorage.getItem( 'lang' ) );
    vm.$onInit = function () {
      var res = vm.resolve;
      vm.title = res.title || 'SHARED.MODAL_TITLE_DEFAULT';
      vm.subtitle = res.subtitle;
      vm.hideCross = res.hideCross;
      vm.showCancel = res.showCancel;
      vm.cancelBtn = res.cancelBtn;
      vm.backdrop = res.backdrop;
      vm.innerTemplate = res.innerTemplate;
      vm.bodyTemplate = res.bodyTemplate;
      vm.hideCross = true;
      vm.block = res.consent;
    }
  }
} )();
function openRevokeConsentModal(ev, blockToRemove, appClientId, appIndex, blockIndex) {
    var parentElement = document.getElementById('permisos-tab');
    var parentAngularElement = angular.element(parentElement);
    $translate(['FEATURES.APPROVED.CANCEL_PERMIT']).then(function(translations) {
        var body = {
            title: translations['FEATURES.APPROVED.CANCEL_PERMIT'],
            bodyTemplate: 'modalRevokeConsent',
            appendTo: parentAngularElement,
            consent: blockToRemove,
            showCancelBtn: true
        };

        utils.openModal(body).then( // Here I get the problem so I cant call the  revokeConsent method.
            function() {

                var removeInfo = {
                    appInfo: {
                        clientId: appClientId,
                        appIndex: appIndex,
                        blockIndex: blockIndex
                    },
                    block: blockToRemove
                };
                //Unfocus the button
                if (ev.explicitOriginalTarget) {
                    ev.explicitOriginalTarget.blur();
                } else if (ev.srcElement) {
                    ev.srcElement.blur();
                }
                revokeConsent(removeInfo);
            },
            function() {
                //Unfocus the button
                if (ev.explicitOriginalTarget) {
                    ev.explicitOriginalTarget.blur();
                } else if (ev.srcElement) {
                    ev.srcElement.blur();
                }
            }
        );
    });
    utils.setModalPositions(200);
}
<div class="modal-footer center">
    <div class="footer-container">
    <div class="btn btn-default" ng-click="vm.close()" ng-class="{'pull-right btn-ok' : vm.cancelBtn, 'btn-cancel' : !vm.cancelBtn }">
        {{'SHARED.MOD_ACCEPT' | translate | uppercase }}
    </div>
    <div class="btn btn-default pull-left btn-cancel" ng-if="vm.cancelBtn" ng-click="vm.dismiss()">
        {{'SHARED.MOD_CANCEL' | translate | uppercase }}
    </div>
    </div>
</div>
 function openModal( body ) {
    var msg = typeof body === "string" ? body : body.message;
    var animation = body.animation === false ? false : true;
    var keyboard = body.keyboard === false ? false : true;
    var bodyTemplate = body.bodyTemplate ?
        "app/components/modal/" + body.bodyTemplate + ".html" :
        undefined;
    ̶v̶a̶r̶ ̶d̶e̶f̶e̶r̶r̶e̶d̶ ̶=̶ ̶$̶q̶.̶d̶e̶f̶e̶r̶(̶)̶;̶

    //...

    var modalInstance = $uibModal
        .open( {

            //...

     } );

    //RETURN the promise 

    return modalInstance.result;

     /* DELETE this
     modalInstance.result.then(
        function () {
            return deferred.resolve();
        },
        function () {
            return deferred.reject();
        }
    );

    return deferred;
    */
}