【发布时间】:2020-04-15 10:01:19
【问题描述】:
我有一个包含许多通过绑定动态创建的输入字段的表单:
<form method="post" (ngSubmit)="onSubmit()">
<div class="row">
<div *ngFor="let p of Model.products" class="col-lg-2 col-md-4 col-sm-6" style="text-align:center">
<p>{{p.name}}</p>
<input name="stock:{{p.id}}" value="{{p.stock}}" type="text" class="form-control" autocomplete="off" onkeypress="return event.charCode >= 48 && event.charCode <= 57" />
<img src="{{p.imgPath}}" style="max-width:120px" />
</div>
</div>
<div style="text-align:right">
<button type="submit" class="btn btn-outline-primary">Submit</button>
</div>
</form>
由于我事先不知道输入的名称,我该如何提交此表单。 我的 onSubmit() 事件处理程序中应该包含什么?
这是组件的代码:
import { Component, Inject, OnInit } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { AuthService } from "../services/auth.service";
@Component({
selector: "admin-stocks",
templateUrl: "stocks.component.html"
})
export class AdminStocksComponent implements OnInit{
Model: ProductListModel;
IsAdministrator: boolean = false;
constructor(@Inject("BASE_URL") private baseUrl: string, private http: HttpClient,
private authService: AuthService) { }
ngOnInit() {
this.authService.isAdministrator().subscribe(res => this.IsAdministrator = res,
error => console.error(error));
var url = this.baseUrl + "api/ajax/GetProducts";
this.http.get<ProductListModel>(url).subscribe(res => { console.log(res); this.Model = res; },
error => console.error(error));
}
getPagesArray(n) {
return new Array(n);
}
onSubmit(e) {
console.log(e);
}
}
【问题讨论】:
-
代码中缺少许多有用的信息:您是否在某个时候更新
Model.products?你应该如何调用服务器?传统的 url 编码的 HTTP Post 还是 Ajax 调用?尝试描述您要发送的数据的“形状”。没有这些信息,我们无法知道答案应该是什么样子。 -
我正在使用 httpclient 获取更新 onInit 中的对象模型。我想通过发布请求使用 httpclient 调用服务器。我要发送的数据是包含在字典键值中的表单本身,其中键是产品的 id,值是产品的库存,即表单输入的值
-
我会用组件的代码更新问题。