我对角度服务有疑问。
我们说我有这个简单的服务:
@Injectable()
export class ApplicationUtilsService {
constructor() {
}
checkIfObjectExistAndGet(map: Map<string, Object>, sectionName: string): Object {
return map.has(sectionName) ? map.get(sectionName) : {};
}
}
为什么不创建和导出函数:
export function checkIfObjectExistAndGet(map: Map<string, Object>, sectionName: string): Object {
return map.has(sectionName) ? map.get(sectionName) : {};
}
这样我可以在每次使用时导入它。不需要将其注入组件中,因此测试更容易创建(我不需要提供服务或创建模拟)。
所以我想知道这些类型的函数是应该由服务提供还是可以像上面的例子那样创建它并导入?
答案 0 :(得分:0)
绝对没有问题在这个简单的用例中!但是,想象一下当您的应用程序增长并且需要在组件层次结构的可能相邻(非嵌套)子树中引用映射或其他对象作为资源存储时...如何实现此目的,以便您不要# 39;做出不必要的API请求或重放昂贵的操作?将服务中的地图/资源/对象封装起来,使其现在成为一个单身人士(它只创建一次),现在你有效率和灵活性