How to make an ActorComponent that handles user input

I would like to make components that control different aspects of the player input. The way I have been doing it is creating ActorComponents that have a method that takes a UInputComponent (much like actors do) and calling this manually in the actors SetupPlayerInputComponent method.

This works, but requires me to add the components in code rather than in a blueprint. What is the correct way to achieve something like this? Ideally, so the method is called automatically on all components within the actor?

Would it be suitable to derive the components from UInputComponent and just use the this pointer within the InitializeComponent method? This would have the limitation that the components cannot be scene components.