Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.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
Angular Typescript:将数组作为参数传递_Angular_Typescript - Fatal编程技术网

Angular Typescript:将数组作为参数传递

Angular Typescript:将数组作为参数传递,angular,typescript,Angular,Typescript,我正试图清理我的代码,并使更多的功能,一个功能。但我需要传递两个数组作为参数和一个字符串。函数工作正常,但我传入的数组没有在类中更新 这是我在typescript中的类,OnCompanyRenterNamegied函数中的注释代码正在工作,但注释下面的新代码不工作,在运行后,它不会更新filteredListOfRenters,我将作为参数传递。它仍然返回完整的列表,没有过滤,但我不知道为什么 export class FilterDialogComponent implements OnIn

我正试图清理我的代码,并使更多的功能,一个功能。但我需要传递两个数组作为参数和一个字符串。函数工作正常,但我传入的数组没有在类中更新

这是我在typescript中的类,OnCompanyRenterNamegied函数中的注释代码正在工作,但注释下面的新代码不工作,在运行后,它不会更新filteredListOfRenters,我将作为参数传递。它仍然返回完整的列表,没有过滤,但我不知道为什么

export class FilterDialogComponent implements OnInit {
  filteredListOfRenters: Company[];
  filteredListOfStatuses: Status[];
  filteredListOfCars: Car[];

  constructor(...) {
  }

  ngOnInit() {
    this.fillFilteredListsOnInit();
    this.selectValueInControl();
  }

  confirmFilter(data): void {
    data.renterId = this.filterFormGroup.get('renterControl').value;
    data.statusId = this.filterFormGroup.get('statusControl').value;
    data.carId = this.filterFormGroup.get('carControl').value;
    this.dialogRef.close({
      data
    });
  }

  onCompanyRenterNameChanged(value: string) {

    //this.fillFilteredListOfRenterCompanies(value.toLowerCase());
    this.fillFilteredList(this.codeListService.listOfRenters, this.filteredListOfRenters, value.toLowerCase());
  }

  onStatusChanged(value: string) {
    this.fillFilteredListOfStatuses(value.toLowerCase());
  }

  onCarChanged(value: string) {
    this.fillFilteredListOfCars(value.toLowerCase());
  }

  fillFilteredList(codeList: any[], filteredList: any[], filter: string){
    if(codeList.length !== 0){
      filteredList = codeList.filter((item) => {
        if(item.name !== null){
          return item.name.toLowerCase().startsWith(filter);
        }
      })
    }
  }

  fillFilteredListOfRenterCompanies(filter: string) {
    if (this.codeListService.listOfRenters.length !== 0) {
      this.filteredListOfRenters = this.codeListService.listOfRenters.filter((item) => {
        if (item.name !== null)
          return item.name.toLowerCase().startsWith(filter);
      });
    }
  }

  fillFilteredListOfStatuses(filter: string) {
    if (this.codeListService.statuses.length !== 0) {
      this.filteredListOfStatuses = this.codeListService.statuses.filter((item) => {
        if (item.name !== null)
          return item.name.toLowerCase().startsWith(filter);
      });
    }
  }

  fillFilteredListOfCars(filter: string) {
    if (this.codeListService.cars.length !== 0) {
      this.filteredListOfCars = this.codeListService.cars.filter((item) => {
        let carName = this.codeListService.getNameOfManufacturerById(item.manufacturerId) + " " + item.model + " " + item.ecv;
        if (carName !== null)
          return carName.toLowerCase().startsWith(filter);
      });
    }
  }

  fillFilteredListsOnInit(){
    this.filteredListOfRenters = this.codeListService.listOfRenters;
    this.filteredListOfStatuses = this.codeListService.statuses;
    this.filteredListOfCars = this.codeListService.cars;
  }
}

您应该返回结果

更新代码如下:

  fillFilteredList(codeList: any[], filteredList: any[], filter: string){
    if(codeList.length !== 0){
      filteredList = codeList.filter((item) => {
        if(item.name !== null){
          return item.name.toLowerCase().startsWith(filter);
        }
      });
      return filteredList 
    }
    return []
  }

您应该返回结果

更新代码如下:

  fillFilteredList(codeList: any[], filteredList: any[], filter: string){
    if(codeList.length !== 0){
      filteredList = codeList.filter((item) => {
        if(item.name !== null){
          return item.name.toLowerCase().startsWith(filter);
        }
      });
      return filteredList 
    }
    return []
  }

通过将array.filter分配给新数组,将filteredList设置为新数组。看

您要做的是从函数返回新结果并将其分配给数组变量

onCompanyRenterNameChanged(value: string) {
    filteredArray = this.fillFilteredList(this.codeListService.listOfRenters, 
    this.filteredListOfRenters, value.toLowerCase());
}

fillFilteredList(codeList: any[], filteredList: any[], filter: string){
    if(codeList.length !== 0){
      return codeList.filter((item) => {
        if(item.name !== null){
          return item.name.toLowerCase().startsWith(filter);
        }
      })
    }
    else {
        return [];
    }
 }

通过将array.filter分配给新数组,将filteredList设置为新数组。看

您要做的是从函数返回新结果并将其分配给数组变量

onCompanyRenterNameChanged(value: string) {
    filteredArray = this.fillFilteredList(this.codeListService.listOfRenters, 
    this.filteredListOfRenters, value.toLowerCase());
}

fillFilteredList(codeList: any[], filteredList: any[], filter: string){
    if(codeList.length !== 0){
      return codeList.filter((item) => {
        if(item.name !== null){
          return item.name.toLowerCase().startsWith(filter);
        }
      })
    }
    else {
        return [];
    }
 }

我以前尝试过,但没有帮助,FilteredListFrenters值仍然是sameI以前尝试过的值,但没有帮助,FilteredListFrenters值仍然是sameJavascript使用的值,因此为参数设置新的内存引用将永远不会起作用。相反,您应该从函数中返回值,并在调用函数的位置设置变量的值。请提供一个工作演示,这将有助于跟踪问题。使用CodePen或任何其他工具。Javascript使用,因此为参数设置新的内存引用永远不会起作用。相反,您应该从函数中返回值,并在调用函数的位置设置变量的值。请提供一个工作演示,这将有助于跟踪问题。使用代码笔或任何其他工具。