我想根据用户输入提交表单,但是该URL仅适用于上一个按钮。我如何使用它,以便addr.url成为当前URL,而不是先前的单击。我想在提交帖子请求之前获取网址。
<form id="launch" ngNoForm action="{{addr?.url}}" target="user.name" method="POST">
<input type="hidden" name="process" value="1"/>
<input type="hidden" name="key" value="user.cookie"/>
<button (click)="onSubmit(userInfo)">
<img src="../../../image/clickme.png">
</button>
</form>
onSubmit(userInfo) {
console.log('post submission' + userInfo);
this.paymentService.launch(userInfo).subscribe(data => {
this.addr = data;
if (this.addr && this.addr !== undefined && this.addr.url && this.addr.url !== undefined) {
console.log ('url: ' + this.addr.url);
$('#launch').submit();
}
});
}
答案 0 :(得分:2)
这里是“以Angular方式”将数据发布到服务器的示例:
表单标签:
<form novalidate
(ngSubmit)="save(signupForm)">
提交按钮:
<button type="submit">
Save
</button>
组件中的save方法:
save(signupForm: NgForm) {
console.log(signupForm.form.value);
// Call an http service to post the form values.
this.dataService.post(signupForm.form.value).subscribe();
}
dataService:
post(signupValues): Observable<Product> {
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
return this.http.post(this.url, signupValues, { headers: headers });
}
注意:此代码是在没有文本编辑器帮助的情况下编写的,可能包含语法错误。
答案 1 :(得分:1)
我将按照DeborahK建议的方式进行操作,并在onSubmit()函数中,将两个HTTP请求(一个获得url和实际提交的请求)与RxJS组合在一起。例如。 this.httpServe.getUrl()。pipe(flatMap(result => this.httpService.submitWithUrl(result,formValued)。