无法解析 xxx.service 的所有参数

Can't resolve all parameters for xxx.service

我不是从 angular 库构建服务,出现错误。这是我的代码和错误。有什么帮助吗?我正在使用 angular 8

从“@angular/core”导入{可注射};

// @dynamic
@Injectable({
  providedIn: 'root'
})
export class SharedSortByColumnService {

    constructor(
        private data: any,
        private searchCriteria: any,
        private childName: string,
        private secondChildName: string,
        private thirdChildname: string) {  }

    columnSorter() {

    }

}

错误:

Can't resolve all parameters for SharedSortByColumnService in C:/722333/xxx/services/shared-sort-by-column.service.ts: (?, ?, ?, ?, ?).

更新

我试过这个:

 constructor(
        public data?: any,
        public searchCriteria?: any,
        public childName?: string,
        public secondChildName?: string,
        public thirdChildname?: string) {  }

还是不行。

您无法使用 DI 神奇地解析一大堆字符串和 "any" 数据类型。

Angular 擅长解析已知可注入的 类 - 但这里如何区分不同的字符串参数?

这些值从何而来?如果它们是在应用程序的生命周期内保持不变的配置值,那么您可以在构造函数中设置它们(而不是通过尝试 DI):

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

  constructor() {  
    // TODO: set config values here
    // this.data = ??
  }

  private data: any;
  private searchCriteria: any;
  private childName: string;
  private secondChildName: string;
  private thirdChildname: string;

  columnSorter() {
  }
}

编辑:

我认为你是在暗示这些实际上是函数参数。

在这种情况下,编写一个接受这些参数的函数是微不足道的:

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

  constructor() {
    // empty constructor, can be deleted
  }

  columnSorter(data: any, searchCriteria: any, childName: string,
    secondChildName: string, thirdChildname: string): data {
    // TODO: process data. 
    // No need  to maintain internal state in the service. 
    // All parameters relate to this single transaction / operation

    return data;
  }
}

服务应仅在应用程序的生命周期内维护内部状态是有意义的。

例如,如果您想对同一组件中的两个数据集进行排序,那么您调用该服务两次并且是 "transactional" 操作 - 函数调用只是数据 + 标准的情况,并且数据输出。