我尝试建立一个Contactform,我的问题是我无法获得POST函数的新ID。它总是让我发出这个:
public Add = (Name: string, Nachname: string, Geburtsdatum: string, Strasse: string, Hausnummer: string, Postleitzahl: string, Wohnort: string): Observable<boolean> => {
let id = this._http.get(this.actionUrl + 'getid', { headers: this.headers })
.map(res => res.json());
var toAdd = JSON.stringify({
Id: id,
Name: Name,
Nachname: Nachname,
Geburtsdatum: Geburtsdatum,
Strasse: Strasse,
Hausnummer: Hausnummer,
Postleitzahl: Postleitzahl,
Wohnort: Wohnort
});
console.error(toAdd);
var res = this._http.post(this.actionUrl, toAdd, { headers: this.headers })
.map(res => true)
.catch(this.handleError);
console.error(res);
return res;
}
我该怎么做才能获得新ID,我需要以下ID:1,2,3,...
{{1}}
答案 0 :(得分:1)
我可以发现的第一个问题是,您未在那里订阅http.get
请求。如果您未添加subscribe
电话,则永远不会执行该请求。
另外:Observable本质上是异步的,所以你不会像你期望的那样从你的通话中获得你的价值。您必须在subscribe
回调中执行此操作。这也意味着依赖于该响应的每个逻辑都会进入该回调。但是,您可以根据Observable
调用public Add = (Name: string, Nachname: string, Geburtsdatum: string, Strasse: string, Hausnummer: string, Postleitzahl: string, Wohnort: string): Observable<boolean> => {
return this._http.get(this.actionUrl + 'getid', { headers: this.headers })
.map(res => res.json())
.flatMap(res => {
var toAdd = JSON.stringify({
Id: res, // depends on what your getid call returns
Name: Name,
Nachname: Nachname,
Geburtsdatum: Geburtsdatum,
Strasse: Strasse,
Hausnummer: Hausnummer,
Postleitzahl: Postleitzahl,
Wohnort: Wohnort
});
console.error(toAdd);
return this._http.post(this.actionUrl, toAdd, { headers: this.headers })
.map(res => {
console.log(res);
return true; // maybe return the actual result?
})
.catch(this.handleError);
}
);
}
来互相链接多个。
res
您在那里记录的.map
变量是一个Observable而不是数据库的实际结果。您可以在true
方法中记录回复,因为某些原因您将返回JComboBox ctr = (JComboBox) control;
ctrl.setSelectedIndex(-1); //-1 indicates no selection
。