如何在订阅Angular 5之外保存数据

时间:2018-04-17 16:03:44

标签: angular

我正在尝试保存从http get请求接收的数据,并将其保存到另一个属于组件

的数组中
getAlerts(){
 this.ChatAlertsService.getAlerts()
        .subscribe((data) => {
                console.log('ngon Init', data);
                this.useralerts=data['result'];
                 console.log('inside subscribe user_alerts', this.useralerts);

            },
            (error) => console.log(error));
    console.log('outside subscribe user_alerts', this.useralerts);
};

这是该函数的主要调用:

ngOnInit() {
        this.getAlerts();

        this.tableData1 = {
            headerRow: ['ID', 'Alert Text', 'Type', 'CreatedAt'],
            dataRows: this.useralerts
                  };
        console.log(this.tableData1.dataRows);   
    }

我在订阅中传递数据,如下所示:

this.tabledata1.dataRows=this.useralerts;

这帮助我预览了表组件中的数据,但是我在主页面中获取了以前访问过的组件(就像它在订阅内部的路由器模块一样) 当我删除该行时,我无法将数据从GET请求保存到数组TableData1.datarows

这是我控制台中显示的屏幕截图: enter image description here

因为它显示数据已成功保存在订阅内,但在外面它是"未定义"

你能不能给我一个解释,我现在被困了2天

这是我正面临的路由& amp;显示: enter image description here

1 个答案:

答案 0 :(得分:0)

我遇到了类似的麻烦,在您的情况下,我只是在订阅之外调用一个set函数的方式就是这样的:

getAlerts(){
 this.ChatAlertsService.getAlerts()
        .subscribe((data) => {
                console.log('ngon Init', data);
                this.setUsersArray(data['result']);
                 console.log('inside subscribe user_alerts', this.useralerts);

            },
            (error) => console.log(error));
    console.log('outside subscribe user_alerts', this.useralerts);
};

setUsersArray(data){
   this.useralerts= data;
}