web-dev-qa-db-fra.com

Uncaught TypeError: angular.lowercase n'est pas une fonction

Uncaught TypeError: angular.lowercase n'est pas une fonction

cette erreur dans mon application angularjs, et toute l'application n'est pas en cours d'exécution. C'est son affichage dans textAngular-sanitize.js:413.

Pas capable de déboguer, j'ai essayé d'utiliser la même version que angular.js, mais sans succès. S'il vous plaît me fournir une solution pour cela. Je n'ai rien à partager en dehors de ce message d'erreur dans la console.

textAngular-sanitize.js:413 Uncaught TypeError: angular.lowercase is not a function
        at parseEndTag (textAngular-sanitize.js:413)
        at htmlParser (textAngular-sanitize.js:378)
        at textAngular-sanitize.js:147
        at textAngularSetup.js:443
        at Object.invoke (angular.js:5093)
        at angular.js:4892
        at forEach (angular.js:374)
        at createInjector (angular.js:4892)
        at doBootstrap (angular.js:1923)
        at bootstrap (angular.js:1944)
14

Comme vous pouvez le constater ici , angular déconseillait leur méthode lowercase util. 

La bibliothèque que vous utilisez n'a pas encore été mise à jour et n'est donc compatible qu'avec une version angulaire antérieure à 1.6.7. Mais puisque vous obtenez cette erreur, la version angulaire que vous utilisez est probablement supérieure.

Tu peux soit 

(A) Déclassement angulaire à 1.6.7, dans votre bower.json:

"dependencies": {
   "angular": "1.6.7",
   ...
}
"resolutions": {
   "angular": "1.6.7"
}

(B) Créez une solution de contournement simple en ajoutant ces méthodes en tant que telles:

angular.lowercase = text => text.toLowerCase();

Assurez-vous que cette opération est effectuée après le chargement de Angular, mais avant le démarrage de votre application.

21
Ovidiu Dolha

La réponse d'Ovidiu Dolha m'a presque rendu là. Si vous regardez l'implémentation de la fonction lowercase avant la dépréciation, c'est un peu plus. Cette implémentation de shim a fait l'affaire pour moi:

/**
 * @brief Shim for textAngular in order to make it compatible with the latest 
 *   version of angularjs
 */

function lowercase(string) {
  return (typeof string === 'string') ? string.toLowerCase() : string;
}

// Angular deprecated the lowercase function as of v1.6.7. TextAngular hasn't 
// updated to reflect this
angular.lowercase = lowercase;
3
Matt McCann

Angular 1.7. * A toujours la fonction minuscule, mais il a été renommé en $$ minuscule. Ceci est une solution de contournement possible. Méfiez-vous des acheteurs, basés sur la documentation angulaire .

angular.module('MyApp').config(function() {
  angular.lowercase = angular.$$lowercase;  
});
3
Arthur Yegiazaryan

Je voudrais partager mes points de vue afin d’aider d’autres personnes qui luttent comme moi. Le problème principal est angularJS qui a officiellement supprimé les fonctions minuscules et majuscules de sa bibliothèque afin que les utilisateurs de textAngular-sanitize.js obtiennent cette erreur a toujours cette méthode dans sa bibliothèque qui passera par ce numéro.

Vous pouvez supprimer textAngular-sanitize.js de votre projet ou inclure Ovidiu Dolha code dans votre app.js avant le chargement de angular.module, comme indiqué ci-dessous.

angular.uppercase=function(text){
 return text.toUpperCase();
 }
 angular.lowercase=function(text){
 return text.toLowerCase();
 }

angular.module('sampleApp', ....)

Le code donné par Ovidiu Dolha 

angular.lowercase = text => text.toLowerCase();

Peut être écrit comme 

angular.lowercase=function(text){
     return text.toLowerCase();
     }

Les deux vont marcher. Je vous remercie.

1

J'utilise AngularJS v1.7.5 . Dans mon contrôleur, j'ai utilisé le code ci-dessous pour convertir une chaîne en minuscule:

function myCtrl($scope, $filter)
{
    var sampleText = "THIS IS TEST";
    var test = $filter('lowercase')(sampleText);
}

Injectez $ filter dans le contrôleur et utilisez-le pour convertir en minuscule.

0
Tapash

Une autre solution appropriée serait de remplacer textAngular par testAngularJs comme suggéré ici.

npm install textangularjs

0
Lunin Roman

si vous utilisez angularjs avec TypeScript et un linter (dans mon cas, tslint + standard), une solution de contournement correcte serait:

if (!angular.lowercase) (angular as any).lowercase = (text: string) => angular.isString(text) ? text.toLowerCase() : text
0
Gullfaxi171

J'ai trouvé un problème similaire lors de la mise à jour vers la version 1.7.5 angulaire. Ma solution consistait à mettre à jour angular-sanitize et le problème a été résolu . angular-sanitize

0
Achilles Moraites