Angular 自定义筛选器区分大小写

Angular 自定义筛选器区分大小写,angular,angular-pipe,Angular,Angular Pipe,我已经创建了自定义管道来从数据库中筛选数据 有烟斗 import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'filter' }) export class FilterPipe implements PipeTransform { transform(aliases: any, term: any): any { // check if search term is undefined i

我已经创建了自定义管道来从数据库中筛选数据

有烟斗

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

@Pipe({
  name: 'filter'
})
export class FilterPipe implements PipeTransform {

  transform(aliases: any, term: any): any {
    // check if search term is undefined
    if (term === undefined) return aliases;
    // return updated array
    return aliases.filter(function(alias){
      return alias.local_part.includes(term) || alias.domain.includes(term);
    });
  }

}
这是我的搜索输入

<form id="filter">
            <div class="input-group custom-search-form">
                <input type="text" placeholder="Search" class="form-control" [(ngModel)]="term" name="filter">
                <span class="input-group-btn">
          <button class="btn btn-primary" type="button">
          <i class="fa fa-search"></i>
                </button>
                </span>
            </div>
        </form>

它工作正常,但我在我的数据库记录,如aaa,Abb,AbbB,cCc

当我在搜索输入中输入内容时,它只返回小写或大写的元素

例如:搜索->aaa 返回aaa,但不返回aaa和aaa


我应该如何更改它以实现它?

在服务器端逻辑中,当您搜索/比较它们时,将这两个术语转换为小写或大写。使用
strtolower()

问题是,如果数据库中的数据
AaA
。我在你的搜索框中写下
aaa

  • 因此,我应该拥有数据
    AaA
  • 没有任何逻辑可以将
    aaa
    随机转换为
    aaa
因此,我们只需将所有内容转换为
aaa
aaa

按照PHP示例,我们可以执行以下操作:

if (strtolower($_POST['search_data']) == strtolower($db_data) {
    // do something
}
更新1:

根据您的代码,大致可以这样做:

<?php
include ('db.php');

$sql = "SELECT * FROM aliases";

$result = $conn->query($sql);
if($result->num_rows > 0){
  $data = array();
  while($row = $result->fetch_assoc()) {
    if (strtolower($_POST['search_data']) == strtolower($row['searched_field']) 
    {
       $data[] = $row;
    }

  }
  echo json_encode($data);
} else {
  echo "0";
}
$conn->close();
 ?>

按如下所示更改管道

private transform(aliases: any, term: any): any {
        let filter;
        let newValue;
        // check if search term is undefined
        if (term === undefined) {
            return aliases;
        } else if (term) {
            filter = term.toLocaleLowerCase();
        }

        if (filter && aliases) {
            newValue = aliases.filter((alias) => alias.local_part.toLocaleLowerCase().indexOf(filter) !== -1 || alias.domain.toLocaleLowerCase().indexOf(filter) !== -1);
        } else {
            newValue = aliases;
        }
        // return updated array
        return newValue;
    }

@我更新了我的答案。您必须使用
search\u data
值(输入搜索)通过POST发送表单,它将返回与该值匹配的行。但是我如何在angular 2中发送它?@Defus这不是问题,问题是解决表单和服务器数据之间的大小写敏感数据问题。但我知道Angular 2在一开始可能会让人不知所措,所以别担心。在这里,您可以找到如何从2向服务器发送帖子:。祝你好运