angular - 如何在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, name: price.name, 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: Cannot read property 'getData()' of undefined at DropdownComponent.ngOnInit (dropdown.component.ts:17)
解决方案
尝试将providedIn: 'root'
您的 DropdownService 更改为providedIn: DropdownModule
来源:https ://angular.io/guide/providers#providedin-and-ngmodules
推荐阅读
- php - Laravel Eloquent 多对多不保存密钥
- python - 在提供正确的答复后,我试图阻止这个 if-elif 提出进一步的问题
- javascript - ( Html2Canvas & jsPDF ) 为什么用 chrome 剪切图像?(在 safari 中不会被切断。)
- amazon-web-services - 有没有办法将文件大小作为输入参数从 AWS S3 存储桶传递到 StepFunctions 状态机?
- google-sheets - 创建未使用表格签到的列表?
- typescript - 是否存在表示具有任何属性但不是数组的对象的类型
- grails - Geb-Spock 使用了错误的 Groovy 版本
- kubernetes - 在 helm 图表上运行 helm install 命令时未创建 pod 模板文件
- epplus - 如何使用 EPPlus 插入大写 yat 符号
- c# - 从 C# 运行 R 脚本