我需要在angular5服务中创建一个具有通用类型的新实例。
请检查以下代码。
@Injectable()
export class LookupService {
duplicate<T>(lookup: T) {
const temp = new T(lookup);
return temp;
}
}
但是它不起作用。 我已经尝试了一天的解决方案,但还找不到。
谢谢
答案 0 :(得分:0)
您关闭了正确的用法:
@Injectable()
export class LookupService {
// You need also a reference to the class to create a new object
duplicate<T>(lookup: T, clazz: { new(): T }) {
const temp = new clazz();
// Set some values of lookup to temp
return temp;
}
}
样品分类
export class SampleClass {
constructor() {
// Some attributes
}
}
在服务或组件中的某处,您将像这样调用duplicate
方法:
const obj: SampleClass = new SampleClass();
// Call the method with the object to clone and its class
this.lookupService.duplicate(obj, SampleClass);
如果“不知道”对象的类,则可以使用lodash之类的库的clone
方法。