Dentro de un módulo, puedes tener la necesidad de utilizar un servicio que pertenece a otro módulo. Importar estos servicios en otros módulos requiere de un paso adicional.
Importaciones de servicios compartidos
Si tienes un Módulo A que posee un Servicio A y un segundo Módulo B requiere hacer uso de este, debes exportar el servicio para que otro módulo pueda utilizarlo.
Debes indicar en la propiedad exports del decorador @Module() que un módulo es exportable para que otro módulo pueda importarlo en sus providers.
De esta manera, evitas errores de compilación de tu aplicación que ocurren cuando importas servicios de otros módulos que no están siendo exportados correctamente.
Ejemplo de interacción entre módulos
A continuación, podrás ver el código que necesitas para hacer que los módulos interactúen entre sí.
// src/users/entities/order.entity.tsimport{User}from'./user.entity';import{Product}from'./../../products/entities/product.entity';exportclassOrder{// // 👈 new entity date:Date; user:User; products:Product[];}
// src/users/controllers/users.controller.ts @Get(':id/orders')// 👈 new endpointgetOrders(@Param('id',ParseIntPipe) id: number){returnthis.usersService.getOrderByUser(id);}
// src/users/services/users.service.ts...import{Order}from'../entities/order.entity';import{ProductsService}from'./../../products/services/products.service';@Injectable()exportclassUsersService{constructor(private productsService:ProductsService){}...getOrderByUser(id:number):Order{// 👈 new methodconst user =this.findOne(id);return{ date:newDate(), user, products:this.productsService.findAll(),};}}