 <p>Sounds like you might want to just partake in the routing lifecycle</p> <p>If you are navigating to a module you can create an <code>activate</code> method on the view model which will be called when routing starts.</p> <p>In this method you can return a promise (while you fetch data) and redirect if the fetch fails</p> <p>In fact if the promise is rejected, the routing will be cancelled</p> <p>If successful you can use whatever method you need to load in your module (assuming it can't just be part of the module that is being loaded since routing won't be cancelled)</p> <p>Something like</p> <pre><code>activate(args, config) { this.http.get(URL).then(resp =&gt; { if (resp.isOk) { // Do stuff } else { // Redirect } }); } </code></pre>