-1
export class ResultComponent {
    students: AdmissionFormData[]

    constructor(private adStudent: AdmissionFormService) {
        adStudent.adFormGet().subscribe(
            x => this.students = x
        )
    }

    onSubmit(value) {

    }
}

在学生数组中,我有数据。而onSubmit是函数,值是参数“roll”

和 HTML 文件:

<div class="form">
<div class="col-md-5 offset-md-3">
  <div class="card">
      <div class="card-header text-center">
          <h3 id="form_name" >Search Result</h3>
      </div>

      <div class="card-block">
          <form (ngSubmit)="onSubmit(f.value)" #f="ngForm" >
              <div class="form-group">
                <label for="">Roll</label>
                <input
                type="number" 
                ngModel
                name="reg" 
                #reg="ngModel" 
                [min]="99999"
                placeholder="Ex: 224697"
                class="form-control">
                <p class="text-danger" *ngIf="!reg.valid && reg.touched">Roll Should have at least 6 letter</p>
              </div>
              <input 
              type="submit"
              value="Search" 
              class="btn btn-block btn-outline-success">
          </form>
      </div>
  </div>

数组

我想在这个数组中搜索滚动,如果找到匹配项,那么我想返回整个数组并在某处使用它。

现在我该怎么做?

我想我之前犯了一个错误,所以我编辑了这个问题。请原谅我是新来的。

4

3 回答 3

4

您可以将 array.filter 与要过滤的属性一起使用,因为您没有提到该属性,假设它为fullname

this.students = this.students.filter(t=>t.fullname ===roll)[0];

或者如果你想要单个对象,请使用 array.find

let studentObj =  this.students.find(t=>t.fullname ===roll);
于 2018-09-12T16:36:29.880 回答
2
export class ResultComponent {
    students: AdmissionFormData[]

    constructor(private adStudent: AdmissionFormService) {
        adStudent.adFormGet().subscribe(
            x => this.students = x
        )
    }

    onSubmit(value):AdmissionFormData[] {
     return this.students.filter(student => student.reg === value)
    }
}

我在您的前两个对象上看到它们具有相同的注册号。如果只需要返回一个对象,则必须使用 find,因为 filter 将返回所有匹配项。我还指定了返回类型,因为这是一种很好的做法。

onSubmit(value):AdmissionFormData[] {
   return this.students.find(student => student.reg === value)
}

更新

我的代码适用于您要求的过滤。我使用假数据创建了一个堆栈闪电战,我开始过滤数组。你们中的一个问题是为什么我的代码不起作用是因为您传递的是对象而不是字符串,但我不知道,因为您没有 HTML。看看我的https://stackblitz.com/edit/angular-nt2ksu看看我是如何处理的

于 2018-09-12T17:30:59.973 回答
0

return this.students.filter(s => s.reg === value)

在这里,s是一个学生对象,您正在过滤其 reg 值与 of 匹配的value对象onSubmit(value)

这将返回具有指定 reg 值的对象数组。

于 2018-09-12T17:06:07.030 回答