0

我是Angular job.job_company_companyName、thethe job.job_company.location和除了下面的两行之外,上面的 3 行正在被过滤。你认为我应该怎么做才能让这件事发挥作用?改变什么为什么带问号的属性不能正常工作。有任何想法吗?将不胜感激!job.jobTitlejob.job_details?.jobCountryjob.job_details?.jobCity?

这是我的search.component.ts

this.filteredList$ = combineLatest(this.list$, this.filter$).pipe(
  map(([jobs, filterString]) =>jobs.filter(job => 
    job.job_company.companyName.toLowerCase().indexOf(filterString.toLowerCase()) !== -1 ||
    job.jobTitle.toLowerCase().indexOf(filterString.toLowerCase()) !== -1 ||
    job.job_company.location.toLowerCase().indexOf(filterString.toLowerCase()) !== -1 ||
    job.job_details?.jobCountry.toLowerCase().indexOf(filterString.toLowerCase()) !== -1 ||
    job.job_details?.jobCity?.toLowerCase().indexOf(filterString.toLowerCase()) !== -1 
    )),
  tap(filtered => {
    this.allJobs = filtered;
    return this.jobsChunk = filtered.slice(0, 9)
  })
);

这是jobs.model.ts

export interface Jobs {
  jobsId: string;
  jobTitle: string;
  job_details?: JobDetails;
  job_package: JobPackage;
  job_status: JobStatus;
  job_company: CompanyProfile;
  createdDate?: string;
}

export interface JobDetails {
  jobCity?: string;
  jobCountry: string;
  jobType: string;
  jobCategory: string;
  jobTags: string[];
  jobDescription: string;
}

export interface CompanyProfile {
  companyName: string;
  location: string; 
}
4

1 回答 1

1

在这种情况下,您对条件实现有疑问:

job.job_details?.jobCity?.toLowerCase().indexOf(filterString.toLowerCase()) !== -1

如果job_detailsjobCity未定义,则比较将是undefined !== -1,它将是true

一个简单的方法是使用> -1代替!== -1条件。

或之前检查属性:

job.job_details?.jobCity && job.job_details.jobCity.toLowerCase().indexOf(filterString.toLowerCase()) !== -1
于 2021-10-05T13:20:11.183 回答