【问题标题】:Grabbing a value from ngFor to use as a parameter in a nested form从 ngFor 中获取一个值以用作嵌套形式的参数
【发布时间】:2021-02-02 13:27:50
【问题描述】:

我有一组术语要循环显示一些字典结果,这些结果具有与它们相关的链接。我有一个每个字典术语的小表单,它触发一个 lambda 函数来运行一个添加链接的存储过程。添加链接的参数之一是当前字典术语 ID。据我从 lambda 端的 Java 错误中可以看出,该函数没有发送术语 ID,所以我觉得在尝试在前端获取 ID 时我做错了。

带表格的模板

<ul>
  <li *ngFor="let term of terms">
      {{ term.term }} - {{ term.def }}
      <ul>
        <li *ngFor="let link of term.links">
          {{ link.name }} - {{ link.url }}
        </li>
      </ul>
      <div class="add-link">
        <form [formGroup]="addRelatedLinkForm" (ngSubmit)="addRelatedLinkSubmit(term.id, addRelatedLinkForm)">
          <input id="name" formControlName="name" type="text" placeholder="Link name">
          <input id="url" formControlName="url" type="text" placeholder="URL">
          <button type="submit">Add Related Link</button>
        </form>
      </div>
  </li>
</ul>

添加相关链接服务

addRelatedLink(token: String, id: Number, link: Link): Observable<any> {
    this.link_url = "http://localhost:4200/link";
    let body = {
      "name": link.name,
      "url": link.url,
      "term_id": id
    }
    const headers = new HttpHeaders({
      'Authorization': 'Bearer ' + token,
      'Content-Type': 'application/json'
    });
    return this.http.post<any>(
      this.link_url,
      body,
      {
        headers: headers
      }
    )
  }
}

组件函数

addRelatedLinkForm = this.formBuilder.group({
    name: '',
    url: '',
    term_id: ''
  })


addRelatedLinkSubmit(id: number): void {
    this.termsService.getAWSToken().subscribe(token => {
      this.termsService.addRelatedLink(token.access_token, id, this.addRelatedLinkForm.value).subscribe(data => {
        console.log(data);
      });
    });
  }

非常感谢任何正确方向的观点!

编辑

问题解决了,Roya 让我意识到有一些地方出了问题,在调试之后,我注意到我通过网络发送的数据是正确的,我只是在 Lambda 端没有匹配一些 Java 参数。

【问题讨论】:

    标签: angular forms ngfor


    【解决方案1】:

    方法定义和调用有区别!

    您在模板addRelatedLinkSubmit(term.id, addRelatedLinkForm) 调用该方法时,它有两个参数,在您定义方法addRelatedLinkSubmit(id: number): void 的组件中,它接受一个参数。

    【讨论】:

    • 感谢您指出这一点!在您回复之后,我正在调试并注意到所有数据都是正确的,结果我的 id 参数与 Java 在我的 Lambda 函数中所期望的“termId”不匹配。谢谢!
    猜你喜欢
    • 2019-02-01
    • 1970-01-01
    • 2021-01-12
    • 2019-04-04
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    相关资源
    最近更新 更多