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()例如,如果您的服务器端语言是PHP,则代码>
问题是,如果数据库中的数据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向服务器发送帖子:。祝你好运