It is designed to be used out of a component life-cycle and you can get control over an ongoing navigation via guards, asynchronously resolve your data and do whatever you need to do to accomplish components rendering.