0
votes

Événement angulaire (keyup) ne détectant pas uniquement le symbole #

J'essaye d'implémenter la barre de recherche en utilisant l'événement angulaire (keyup). Et j'ai le nom de fichier comme

  • base @,
  • base $,
  • base 1,
  • base #,
  • base 2,

quand je recherche base @ ou base $ ou base 1 dans la barre de recherche, il filtre bien. mais quand je recherche la base # il ne filtre pas la base # il filtre tous les noms de fichiers avec la base. voici le code ci-dessous que j'ai codé

Mon html:

onSearch(event: any) {
    const keywords = event.target.value;
    if (keywords && keywords.length > 2) {
          const apiURL =`abc/thg/hjy?filter[file.name]=${keywords}`;
          this.api.get(apiURL).subscribe((data: any) => {
            console.log(data);
            this.topics = data.list;
            if (this.trigger) {
            this.trigger.openMenu();
            }
         });
    } else {
        this.topics = [];
        this.trigger.closeMenu();
    }
}

mon code js:

<input type="search" class="form-control" placeholder="Search file" (keyup)="onSearch($event)" [(ngModel)]='searchKeywords'>


4 commentaires

Cela ne devrait pas arriver, vous avez probablement manqué " after keyup event attribute (keyup)="onSearch($)"


@PankajParkar ce n'était pas le problème. cela fonctionne bien pour d'autres symboles spéciaux.


Il n'y a rien de mal avec le code. C'est un problème avec # car il est utilisé pour délimiter un URI d'un identifiant de fragment dans URI. Ainsi, le caractère "#" doit être exclu dans celui qui est passé dans l'URL. Donc la base sera traitée comme nulle


@techyaura donc il n'y a aucun moyen que je puisse passer # dans l'URl ??


3 Réponses :


0
votes

Je remarque que vous avez un manque dans le balisage HTML.

onSearch(event: any) {
  ...
}

Ensuite, dans le fichier .ts :

<input type="search" class="form-control" placeholder="Search file" (keyup)="onSearch($event)" [(ngModel)]="searchKeywords">


1 commentaires

D ce n'était pas le problème. j'ai édité ma question maintenant. pouvez-vous vérifier maintenant.



0
votes

Je pense que la valeur est définie correctement dans apiURL dans la ligne:

const apiURL =`abc/thg/hjy?filter[file.name]=${keywords}`;

Je pense que le problème est la ligne suivante, où vous passez le # (hashtag) sans l'encodage d'URL.

Essayez d'échanger le hashtag avec %23 avant de l'utiliser dans la ligne suivante - votre demande d' get .

Voir: Comment échapper le caractère de hachage dans l'URL


0 commentaires

1
votes


0 commentaires