如何在Angular组件中的服务类内部调用函数

问题描述

我在服务文件夹中有DropdownService服务类,在共享文件夹中有DropdownComponent服务类。我想在我的getData()服务类中调用DropdownComponent方法

这是我的DropdownService类。

  @Injectable({
  providedIn: 'root'
})
export class DropdownService {

    constructor(private serviceHandler: ServiceHandler) { }
     getData() {
    
        FilterCriterias.isdisableFilters  = true;
        this.serviceHandler.getPrices([],[]).subscribe(prices => {
          console.log(prices[0].code);
          const priceList = [];
          for (let i = 0; i < prices.length; i++) {
            const price = prices[i];
            if (i !== 0) {
              priceList.push({ code: price.code,name: price.name,isSelected: false,isDefault: false });
            } else {
              priceList.push({ code: price.code,isSelected: true,isDefault: true });       
            }
          }
          FilterCriterias.priceList = priceList;
          console.log(FilterCriterias.priceList);
        });
      }
}

这是我的下拉模块文件。我已经将DropdownService添加到DropdowntModule文件中。

@NgModule({
  declarations: [DropdownComponent],imports: [
    CommonModule
  ],providers: [DropdownService],exports: [
    DropdownComponent
  ]
})
export class DropdowntModule { }

这是我的DropdownComponent.ts文件

constructor(private dropdownServiceHandler: DropdownService) { }

ngOnInit() {
    this.dropdownServiceHandler.getData();
  }

但是它显示了这样的错误 TypeError:无法读取未定义的属性'getData()' 在DropdownComponent.ngOnInit(dropdown.component.ts:17)

解决方法

尝试将DropdownService的providedIn: 'root'更改为providedIn: DropdownModule

来源:https://angular.io/guide/providers#providedin-and-ngmodules