uibmodal open modal bootstrap javascript angularjs modal-dialog

javascript - open - modal bootstrap angularjs



Proveedor desconocido: $ modalProvider<- $ error modal con AngularJS (6)

Después de verificar que tenía todas las dependencias incluidas, arreglé el problema cambiando el nombre $modal a $uibmodal y $modalInstance a $uibModalInstance

Sigo recibiendo este error porque estoy tratando de implementar la ventana modal de bootstrap. ¿Cuál podría ser la causa? Copié / pegué todo desde http://angular-ui.github.io/bootstrap/#/modal aquí.


Este tipo de error ocurre cuando escribe una dependencia para un controlador, servicio, etc., y no ha creado ni incluido esa dependencia.

En este caso, $modal no es un servicio conocido. Parece que no pasaste en ui-bootstrap como una dependencia cuando bootstrapping angular. angular.module(''myModule'', [''ui.bootstrap'']); Además, asegúrese de estar utilizando la última versión de ui-bootstrap (0.6.0), solo para estar seguro.

El error se produce en la versión 0.5.0, pero la actualización a 0.6.0 hace que el servicio $ modal esté disponible. Por lo tanto, actualice a la versión 0.6.0 y asegúrese de requerir ui.boostrap al registrar su módulo.

Respondiendo a su comentario: Así es como se inyecta una dependencia de módulo.

<!-- tell Angular what module we are bootstrapping --> <html ng-app="myApp" ng-controller="myCtrl">

js:

// create the module, pass in modules it depends on var app = angular.module(''myApp'', [''ui.bootstrap'']); // $modal service is now available via the ui.bootstrap module we passed in to our module app.controller(''myCtrl'', function($scope, $uibModal) { });

Actualizar:

El servicio $modal ha cambiado de nombre a $uibModal .

Ejemplo usando $ uibModal

// create the module, pass in modules it depends on var app = angular.module(''myApp'', [''ui.bootstrap'']); // $modal service is now available via the ui.bootstrap module we passed in to our module app.controller(''myCtrl'', function($scope, $uibModal) { //code here });


La respuesta obvia para el error del proveedor es la dependencia faltante al declarar un módulo como en el caso de agregar ui-bootstrap. Lo único que muchos de nosotros no tenemos en cuenta son los cambios bruscos al actualizar a una nueva versión. Sí, lo siguiente debería funcionar y no aumentar el error del proveedor:

var app = angular.module(''app'', [''ui.router'', ''ngRoute'', ''ui.bootstrap'']); app.factory("$svcMessage", [''$modal'', svcMessage]);

Excepto cuando estamos usando una nueva versión de ui-boostrap. El proveedor modal ahora se define como:

.provider(''$uibModal'', function() { var $modalProvider = { options: { animation: true, backdrop: true, //can also be false or ''static'' keyboard: true },

El consejo aquí es una vez que nos aseguremos de que las dependencias estén incluidas y todavía recibamos este error, debemos verificar qué versión de la biblioteca JS estamos usando. También podríamos hacer una búsqueda rápida y ver si ese proveedor existe en el archivo.

En este caso, el proveedor modal ahora debería ser el siguiente:

app.factory("$svcMessage", [''$uibModal'', svcMessage]);

Una nota más Asegúrese de que su versión de ui-bootstrap sea compatible con su versión angularjs actual. Si no, puede obtener otros errores como templateProvider.

Para información, consulte este enlace:

http://www.ozkary.com/2016/01/angularjs-unknown-provider-modalprovider.html

Espero eso ayude.


Solo una nota adicional para un problema que también experimenté hoy: tuve un error similar "Proveedor desconocido: $ aProvider" cuando activé minification / uglify de mi código fuente.

Como se menciona en el tutorial de documentos angulares (párrafo: "Una nota sobre la minificación") , debe usar la sintaxis del arreglo para asegurarse de que las referencias se mantengan correctamente para la inyección de la dependencia:

var PhoneListCtrl = [''$scope'', ''$http'', function($scope, $http) { /* constructor body */ }];

Para el http://angular-ui.github.io/bootstrap/#/modal , mencione que debe reemplazar esto:

var ModalInstanceCtrl = function ($scope, $modalInstance, items) { /* ...example code.. */ }

con esta notación de matriz:

var ModalInstanceCtrl = [''$scope'', ''$modalInstance'', ''items'', function ($scope, $modalInstance, items) { /* copy rest of example code here */ }];

Con ese cambio, mi código de ventana modal de Interfaz de Usuario Angular reducido volvió a funcionar.


5 años después (este no hubiera sido el problema en ese momento) :

El espacio de nombres ha cambiado: puede tropezar con este mensaje después de actualizar a una versión más nueva de bootstrap-ui ; necesita consultar $uibModal y $uibModalInstance .


var ModalInstanceCtrl = [''$scope'', ''$modalInstance'', function ($scope, $modalInstance, items) { /* copy rest of example code here */ }];