在角度2中添加功能,如何获取联系人数据库的新ID?

时间:2016-09-14 11:53:43

标签: post angular typescript visual-studio-2015 add

我尝试建立一个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}}

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