How to align object pivot to selected points or edges?
You can create custom orientation.


Select some vertices and your desired orientation (Normal in this case)  
Add it as a custom orientation through Transform Orientation menu > +
Your custom orientation will now apply to all objects (you can change it in the list)