2
votes

filtre stringLowerCase à appliquer sur ngFor

Je définis un exemple de tuyaux dans mon application, qui transforme la chaîne en majuscules en minuscules ex: 'Activities' => 'activities '. Et les données sont au format Array et j'applique ce filtre sur * ngFor . Cela me renvoie une erreur disant que « toLowerString n'est pas une fonction», aidez-moi à comprendre où je vais mal.

Lien de démonstration


5 commentaires

Pourquoi n'utilisez-vous pas simplement le tuyau prédéfini en angulaire pour les minuscules? Exemple: let légende des légendes | minuscule


@SoujanyaJ je pense que vous devez {{Abc | minuscules}} cochez cette stackblitz.com / edit /…


@ThanveerShah a bien compris, voici le lien, angular.io/api/common/LowerCasePipe#lowercasepipe


@Soujanya - vous devez utiliser un tube prédéfini comme {{option | minuscule}} plutôt que de créer un tube complexe sur un tableau. rendre votre projet simple et plus rapide


Merci pour toutes vos réponses, j'essaye en fait de créer un composant de table. Et je voulais transformer le col en minuscule, c'est mapper à mon jeu de données, afin de construire des enregistrements. Pouvez-vous jeter un œil au code source mis à jour.


5 Réponses :


0
votes

Notez que .toLowerCase () est utilisable uniquement sur le type de données string . Cela dit, vous devez vous assurer que les données étaient une chaîne avec: .toString ()

export class LowerCasePipe implements PipeTransform {
 transform(value: Array<string>) {
      return value.map((x)=>{ return x.toLowerCase() })
    }
}

Cela étant dit Thanveer Shah a été dit dans le comment vous pouvez utiliser | minuscules qui sont intégrées pour se transformer en chaîne.

Voir Fork pour les deux versions utilisées.


Clarification: Utilisé intentionnellement le code suivant:

export class LowerCasePipe implements PipeTransform {
  transform(value) {
    console.log(value.toString().toLowerCase());
    for (let i = 0; i < value.length; i++) {
      value[i] = value[i].toString().toLowerCase();
    }
    return value;
  }
}

pour montrer que les données étaient un tableau.

Mais si vous comprenez déjà qu'il s'agissait d'un tableau, vous pouvez simplement utilisez:

value.toString().toLowerCase()

comme dans l ' autre réponse de Ferhad Othman .




1
votes

Vous devez appliquer votre pipe personnalisée comme ci-dessous, cela fonctionnera.

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({ 
    name: 'stringLowerCase' 
})
export class LowerCasePipe implements PipeTransform {
    transform(value: string) {
        console.log(value.toString().toLowerCase());
        return value.toLowerCase();
    }
}

Et dans votre pipe, retournez après la valeur tranform comme ci-dessous.

 <ul>
        <li *ngFor="let caption of captions ">
            {{caption | stringLowerCase }}
        </li>
    </ul>

Voici la solution fourchue


2 commentaires

pourquoi ne pas utiliser un tube intégré minuscule :)


oui mais il pourrait faire une opération de chaîne supplémentaire, alors le tube personnalisé est plus utile



3
votes
<li *ngFor="let caption of captions">
    {{caption | lowercase }}
</li>

<li *ngFor="let caption of captions">
    {{caption | uppercase }}
</li>

1 commentaires

Merci pour toutes vos réponses, j'essaye en fait de créer un composant de table. Et je voulais transformer le col en minuscule, c'est mapper à mon jeu de données, afin de construire des enregistrements. Veuillez trouver le code source mis à jour.



0
votes
<li *ngFor="let caption of captions">
    {{caption | lowercase }}
</li>

1 commentaires

Bien que ce code puisse être la solution, en tant que bonne réponse, il a vraiment besoin d'une explication sur les raisons de son fonctionnement.