绑定来自Observable的数据时,对象未定义

时间:2019-08-14 07:51:49

标签: angular typescript

这个问题可能已经在某处得到了回答,但是提供的解决方案对我不起作用或我没有正确使用它们。我有一项服务,该服务从对.net核心API的调用返回数据。返回了数据,但我无法将其绑定到对象。

数据由以下Company.Service.ts返回

---
- name: run script
  script: ./files/script.ps1 PARAMETERS
  args:
    creates: script_has_been_run.txt

我试图在这里获取数据以绑定到前端。

export class CompanyListRequest{
    UserID: number
}

//Company.Service.ts

import { CompanyListRequest } from '@app/_models/Company/CompanyListRequest';
 import { CompanyListViewModel } from '@app/_models/Company/CompanyListViewModel';

@Injectable({
  providedIn: 'root'
})

export class CompanyService {
  private companyListRequest : CompanyListRequest;

  constructor(private http: HttpClient) { 
    this.companyListRequest = {
      UserID:2, //For simplicity
    }
  }

  getAllCompanyList(){
      return this.http.post<CompanyListViewModel[]>(`${environment.apiUrl}/Company/GetCompanyDetails`,this.companyListRequest);
  }
}

this.data是未定义的。我检查了CompanyListViewModel,并且属性与返回的内容匹配。

1 个答案:

答案 0 :(得分:0)

第一个public data: Observable<CompanyListViewModel[]>;的类型错误。 this.companyService.getAllCompanyList()返回一个Observable<CompanyListViewModel[]>,但是在订阅中,您收到的data不再是Observable,它只是具有以下类型的数据:CompanyListViewModel[]

此外,您可能有一个可变的阴影问题。您在subscribe回调中收到的数据称为data,以及组件的data属性。尝试将其中之一重命名为其他名称:

...subscribe(data => {
  this.companyList = data['ResponseObject']
});