代码之家  ›  专栏  ›  技术社区  ›  Bm8

有棱角的-聪明的桌子不会填满

  •  1
  • Bm8  · 技术社区  · 8 年前

    我的智能表不会使用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” 在本地数据源.push../node\u modules/ng2智能表/lib/data source/local/本地数据-source.js.LocalDataSource文件.获取元素 (本地数据-来源: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[]”类型的参数。

    有人知道我哪里出错了吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Chris    8 年前

    您必须等待Http请求完成,然后才能分配它返回的数据。那么当你分配 const data = this.service.getData();

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

    getData() {
        return this.http.get('http://localhost:56591/api/db/get');
    }
    

    this.source.load(data);

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

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