Think of your angular app in terms of n-layer architecture. Follow the DRY principle and at least some of the SOLID points — in this case, S in your services. Think of “Components” as a pair of presenter presentations (where the model is somewhere else), and not ASP.NET webForms (markup combined with code behind).
There are two main features that will affect the details of your design - your endpoint of your service server knows about your viewing models or not. Some teams use an approach where a little conversion is required in your angular application, as the server-side models are very close to angular. In these cases, everything that does not depend on the view may well be in your service, while the component can be implemented with transformations specific to the view.
On the other hand, if you need to map a more general service / server response in your angular view model, you don't want to do this in the service. You also do not want to do this in a component if you can reuse this model (think of it as a business class, not just a DTO) in other views. Since mapping may include business rules, it is best to isolate the highlighted model and mapper layer in your angular application and retain the DRY and "S" services and components. Creating a separate model / business layer is also good, because it can help you easily replace the user interface structure later.
source share