Angular 角度-智能表赢得';t填充

Angular 角度-智能表赢得';t填充,angular,angular6,smart-table,ng2-smart-table,Angular,Angular6,Smart Table,Ng2 Smart Table,使用HttpClient发送get请求以获取json数据时,我的智能表不会填充 this.http.get('http://localhost:56591/api/db/get').subscribe((data) => { return data; }); 这将返回: [ {"id":1,"name":"User1","email":"user1@email.com","password":"test"}, {"id":2,"name":"User2","email":"u

使用HttpClient发送get请求以获取json数据时,我的智能表不会填充

this.http.get('http://localhost:56591/api/db/get').subscribe((data) => {
  return data;
});
这将返回:

[
  {"id":1,"name":"User1","email":"user1@email.com","password":"test"},
  {"id":2,"name":"User2","email":"user@email.com","password":"test"},
  {"id":3,"name":"User3","email":"user@email.com","password":"test"}
]
在subscribe中使用return会出现以下错误:

错误类型错误:无法读取未定义的属性“slice” 在LocalDataSource.push../node_modules/ng2 smart table/lib/data source/local/local.data-source.js.LocalDataSource.getElements (local.data source.js:71)

当将对象直接指定给变量时:

var data = [
  {"id":1,"name":"User1","email":"user1@email.com","password":"test"},
  {"id":2,"name":"User2","email":"user@email.com","password":"test"},
  {"id":3,"name":"User3","email":"user@email.com","password":"test"}
];
return data;
我能找到的唯一区别是,当使用get请求而不是直接将变量分配给对象时,这段代码会给出一个错误

constructor(private service: SmartTableService) {
  const data = this.service.getData();
  this.source.load(data);
}
“void”类型的参数不能分配给“any[]”类型的参数

有人知道我哪里出错了吗


提前感谢。

您必须等待Http请求完成,然后才能分配它返回的数据。那么,当您分配
const data=this.service.getData()时会发生什么未返回任何内容

您可以通过从服务中的http调用返回一个可观察的值来解决此问题:

getData() {
    return this.http.get('http://localhost:56591/api/db/get');
}
然后在您的组件中订阅返回的Observable,这将等待http调用解析,然后再将数据传递到
this.source.load(data)

让我知道这是否有效,否则我们可以进一步排除故障

this.service.getData().subscribe((data) => {
    this.source.load(data);
});