为什么我在角度的第二个休息请求无法更新数据网格?

时间:2019-08-13 07:40:55

标签: javascript angular ecmascript-6

我正在使用Angular应用程序,但是在数据更新方面遇到了麻烦。

1-我正在创建一个数据网格 2-我要求从特定用户那里获取数据 3-我要求通过uuid(包含在上一个请求中)来获取部门的名称:信息 4- Datagrid已更新

当我修改部门名称而没有休假请求时,该名称被更新。但是,当我在代码中的相同位置将其替换为请求时,则无法很好地更新数据网格。 (但结果是可以接受的)

ngOnInit() {
    this.context = { componentParent: this };
    this.subscription.push(this.translate.get('Purchase').subscribe((res) => {
        this.gridOptions.onGridReady = (params) => {
            this.gridApi = params.api;
            this.gridApi.setColumnDefs(this.createColumnDef());
            this.gridApi.refreshCells({ force: true });
            this.gridOptions.api.sizeColumnsToFit();
        }
        // Limit Purchases to user budgetscope matches
        this.userService.getUserInfo().subscribe((user) => {
           this.subscription.push(this.purchase.findByUserId(user.id).subscribe((purchases: PurchaseOrder[]) => {
                this.rowData = purchases;

                //change the uuid of the department by it's name
                this.rowData.forEach(element => {
                    console.log('1');
                    let mafonction = (element) => {
                        this.departmentService.findByDepartmentUuid(element.department).subscribe((department: Department) => {
                            element.departement = department.name;
                            console.log(element.departement);
                        });
                    };
                    mafonction(element);
                });
                console.log('2');
            }))
        }),
        () => {
            // ...
        };
    }));
    console.log('4');
}

执行此代码时,我进入了控制台:

  

1
  2
  信息

但数据网格中没有名称。

当我刚替换时:

this.rowData.forEach(element => {
    console.log('1');
    // ...
    mafonction(element);
});

通过

this.rowData.forEach(element => {element.department = "nothing2"});

“ nothing2”未显示在数据网格中。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题:this.rowData =购买;应该显示最后一个数据块(department.findByUuid),以便显示最后一个数据。