Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在角度应用程序中过滤后重置javascript数组_Javascript_Angular - Fatal编程技术网

在角度应用程序中过滤后重置javascript数组

在角度应用程序中过滤后重置javascript数组,javascript,angular,Javascript,Angular,我有一个有角度的应用程序,显示了一个名字列表。我有一个搜索输入来过滤那个列表 <input [ngModel]="searchStr" (ngModelChange)="modelChange($event)" type="text" id="employeeName"> HTML模板 <div *ngFor="let employee Of employeeList> e

我有一个有角度的应用程序,显示了一个名字列表。我有一个搜索输入来过滤那个列表

<input [ngModel]="searchStr" (ngModelChange)="modelChange($event)" type="text" id="employeeName">
HTML模板

<div *ngFor="let employee Of employeeList>
    employee.name
</div>

您正在modelChange中覆盖相同的数组,因此如果您想恢复到原始数组(在某些情况下),您必须在某个地方保留原始数组的引用,或者根本不覆盖原始数组。为显示目的维护另一个数组,假设您将其命名为displayArr

您的代码将按如下方式更新

公共显示arr:any[]=[]
modelChange(str:string):void{
调试器;
this.searchStr=str;
//如果提供了某些搜索字符串,则过滤原始数组
如果(str)
{
this.displayArr=this.employeeList.filter(emp=>emp.name.includes(this.searchStr));
}
else//如果未提供搜索字符串,则不过滤数组并按原样返回。
{
this.displayArr=this.employeeList;
}

}
您正在modelChange中覆盖相同的数组,因此如果您想恢复到原始数组(在某些情况下),必须在某个地方保留原始数组的引用,或者根本不覆盖原始数组。为显示目的维护另一个数组,假设您将其命名为displayArr

您的代码将按如下方式更新

公共显示arr:any[]=[]
modelChange(str:string):void{
调试器;
this.searchStr=str;
//如果提供了某些搜索字符串,则过滤原始数组
如果(str)
{
this.displayArr=this.employeeList.filter(emp=>emp.name.includes(this.searchStr));
}
else//如果未提供搜索字符串,则不过滤数组并按原样返回。
{
this.displayArr=this.employeeList;
}

}
您应该将数组保存在中间变量中,如下所示:

const filtered = [];
const unfiltered = [v1, v2, v3];

最初将值从
未过滤的
复制到
已过滤的
。过滤后,将
未过滤的
过滤值复制到
已过滤的
,然后在需要时还原

您应该将数组保存在中间变量中,如下所示:

const filtered = [];
const unfiltered = [v1, v2, v3];

最初将值从
未过滤的
复制到
已过滤的
。过滤后,将
未过滤的
过滤值复制到
已过滤的
,然后在需要时还原

谢谢您的帮助!谢谢你的帮助!