无法解析xxx.service

时间:2020-02-13 06:42:59

标签: angular angular-library

我不是从angular lib构建服务,出现错误。这是我的代码和错误。有什么帮助吗?我正在使用角度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) {  }

仍然无法正常工作。

1 个答案:

答案 0 :(得分:3)

您无法使用DI神奇地解析一堆字符串和“任何”数据类型。

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;
  }
}

该服务应仅维护内部状态,在应用程序的整个生命周期内对其进行维护是有意义的。

例如,如果要在同一组件中对两个数据集进行排序,则您两次调用该服务,并且是“事务性”操作-函数调用只是数据+条件输入和数据输出的情况。 / p>