Angular - 智能 table 不会填写
Angular - Smart table won't fill
My Smart table 不会填充使用 HttpClient 发送获取请求以获取 json 数据。
this.http.get('http://localhost:56591/api/db/get').subscribe((data) => {
return data;
});
这个 returns:
[
{"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 给我这个错误:
ERROR TypeError: Cannot read property 'slice' of undefined
at 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);
}
Argument of type 'void' is not assignable to parameter of type 'any[]'.
有人知道我错在哪里吗?
提前致谢。
您必须等待 Http 请求完成,然后才能分配它 returns 的数据。那么当你分配 const data = this.service.getData();
什么都没有返回时发生了什么。
您可以通过从服务中的 http 调用返回 Observable 来解决此问题:
getData() {
return this.http.get('http://localhost:56591/api/db/get');
}
然后在您的组件中订阅返回的 Observable,这将在将数据传递到 this.source.load(data);
之前等待 http 调用解析
this.service.getData().subscribe((data) => {
this.source.load(data);
});
让我知道是否有效,否则我们可以进一步解决问题。
My Smart table 不会填充使用 HttpClient 发送获取请求以获取 json 数据。
this.http.get('http://localhost:56591/api/db/get').subscribe((data) => {
return data;
});
这个 returns:
[
{"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 给我这个错误:
ERROR TypeError: Cannot read property 'slice' of undefined at 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);
}
Argument of type 'void' is not assignable to parameter of type 'any[]'.
有人知道我错在哪里吗?
提前致谢。
您必须等待 Http 请求完成,然后才能分配它 returns 的数据。那么当你分配 const data = this.service.getData();
什么都没有返回时发生了什么。
您可以通过从服务中的 http 调用返回 Observable 来解决此问题:
getData() {
return this.http.get('http://localhost:56591/api/db/get');
}
然后在您的组件中订阅返回的 Observable,这将在将数据传递到 this.source.load(data);
this.service.getData().subscribe((data) => {
this.source.load(data);
});
让我知道是否有效,否则我们可以进一步解决问题。