Angular - 从组件 returns 未定义的服务调用方法

Angular - Calling method on service from component returns undefined

我在服务文件中有这个服务,它是一个 http 调用。

    export class BackendServices {
      addons: IAddons[];   
      constructor(private http: HttpClient) { 
        this.getWorkOrders();
      }
     getAddons() {
      this.http.get<IAddons>(this.BASE_URL + '/addons/')
      .subscribe((data: any) => {
          this.addons = data;
      });
    }

组成部分 然后从我的主要组件我有一个调用模态对话框的按钮。这是主要组件的代码:

export class OrdersComponent { 
openAddonsDialog() {
    let dialogRef = this.pickAddonsDialog.open(PickaddonsComponent);
  }
}

然后我从对话框的构造函数调用服务上的 getAddons 方法。 我只是想知道我们如何让模式对话框仅在插件 属性 从 http 调用接收到数据时才打开。

export class PickaddonsComponent implements OnInit {
    constructor(public bs: BackendServices) {
        this.bs.getAddons();
    }

但它说 this.service.getAddons() 未定义。在 Whosebug 上阅读了很多关于此的内容,从不同的帖子中尝试了很多步骤,但 none 到目前为止帮助了我。

似乎已初始化 BackendService 的属性 addons 未定义。这是真的。因为只有在调用方法getAddons.

时才会设置

试试这个:

export class BackendServices {
  addons: IAddons[] = [];   
  constructor(private http: HttpClient) { 
    this.getWorkOrders();
  }
 getAddons() {
  return this.http.get<IAddons>(this.BASE_URL + '/addons/')
  .subscribe((data: any) => {
      this.addons = data;
  });
}

正在替换

 addons: IAddons[];

 addons: IAddons[] = [];