title: How to router.navigate to same route in Angular 4 and catch the same event?
body: <p>Okay, I have two use cases for my question here:</p>
  <ol>
  <li><p>I'm working on an application which has a <code>/en/register</code> route. It all works good when I'm at the root and I click a button that does <code>this.router.navigate([this.routeParams.lang, 'register']);</code> and it's all good, this opens up a modal in the constructor (or ngOnInit, anyways) with <code>($('#modalRegister') as any).modal('show');</code>.</p>
  <p>It all works good, but if I close the modal, the route is still <code>/en/register/</code> (yeah I can make it go to <code>/en</code> but see the use case #2 before you suggest this), so when I click the button, it doesn't do anything. Neither the constructor or ngOnInit are being called, <strong>not even</strong> <strong>route.params.subscribe()</strong> or <strong>route.url.subscribe()</strong> (which I think they should...).</p>
  </li>
  <li><p>In the same application, I have a button that does a search and centers some markers in a map (in <code>/en/search/blah</code>). That's all good if I'm in the index page <em>or</em> if I change the search query. However, if the user drags the map somewhere else and wants to have the same markers centered again, I also do <code>this.router.navigate(['search', this.searchQuery]);</code> and if it ends up being the same route (click the search button twice, for instance) it doesn't do anything.</p>
  </li>
  </ol>
  <p>While I agree it's good so the components don't get recreated if the URL hasn't changed, this is a bad design because in UI-router you could do the same thing and it'd work (as far as I can remember).</p>
  <p>So, in Angular 4, how do I run the same code in the constructor/ngOnInit of the route's component when the same URL is being told to be navigated to? or how do I detect if the URL is the same and act accordingly? (although I still think it's bad design, but anyway...).</p>
  <p>Any advice is greatly appreciated. Thanks!</p>