在suscribe方法angular2

时间:2017-12-13 06:46:53

标签: angular2-services

我试图在subscribe方法中实例化一个类变量。

class Emp{
    val : Array<EmpClass> =[];
    getEmp() : EmpClass[] {
        this.http.get<EmpMyClass[]>(this.targetURL).subscribe(data => this.val = data);
        alert(this.val.count)
        return this.val;
    }
}

此方法从服务器检索数据(json对象列表)。当按钮&#34;检索&#34;单击并在UI上呈现列表中的所有对象。 我有另一种更新数据库的方法(添加新员工对象)。

期望 - &gt;我添加了一个员工对象。点击&#34;检索&#34;后,更新后的结果应显示在屏幕上。

实际行为 - &gt;如果我点击&#34;检索&#34;第一次呈现0结果(因为列表为空,我认为方法在订阅调用完成之前返回列表)。如果我点击&#34;检索&#34;第二次(在1秒的间隙之后),呈现正确的结果。

有没有办法可以确保只有在订阅完成后才返回列表,即第一次点击&#34;检索&#34;按钮。

注意:我也尝试了另一种方式

getEmp() {
    let   v: Array<EmpMyClass> = [];
    this.http.get<EmpMyClass[]>(this.targetURL).subscribe(data => v = data , () => console.log(), () => this.meth(v));
}
meth(em: EmpMyClass[]) {
    this.val = em;
}
getVal(): EmpMyClass[] {
    return this.val;
}

我首先调用getEmp(),假设它将实例化val变量,然后调用getVal()以获取更新列表,但结果仍然相同。

我已经阅读了类似的帖子,但仍然无法克服这种情况。

0 个答案:

没有答案