从 ngFor 中获取一个值以用作嵌套表单中的参数
Grabbing a value from ngFor to use as a parameter in a nested form
我有一组术语正在循环显示一些字典结果,这些结果有 link 与之相关。每个字典术语我都有一个小表格,它触发一个 lambda 函数到 运行 一个添加 link 的存储过程。添加一个 link 的参数之一是当前词典术语 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>
添加相关Link服务
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 参数.
方法定义和调用有区别!
您在模板 addRelatedLinkSubmit(term.id, addRelatedLinkForm)
调用方法的地方有两个参数,在您定义方法的组件中 addRelatedLinkSubmit(id: number): void
它接受一个参数。
我有一组术语正在循环显示一些字典结果,这些结果有 link 与之相关。每个字典术语我都有一个小表格,它触发一个 lambda 函数到 运行 一个添加 link 的存储过程。添加一个 link 的参数之一是当前词典术语 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>
添加相关Link服务
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 参数.
方法定义和调用有区别!
您在模板 addRelatedLinkSubmit(term.id, addRelatedLinkForm)
调用方法的地方有两个参数,在您定义方法的组件中 addRelatedLinkSubmit(id: number): void
它接受一个参数。