我不是从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) { }
仍然无法正常工作。
答案 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>