title: Angular Route Rule Not Working As Expected
body: <p>I am using the <code>matcher</code> property of <code>Route</code> to define routing rules for my app, instead of the usual <code>path</code> property. This is the first time i am doing this, and docs on this feature is pretty scarce. However, I found little info on usage at <a href="https://angular.io/api/router/UrlMatcher" rel="nofollow noreferrer">UrlMatcher</a>.</p>
  
  <p>Here is my trimmed route file:</p>
  
  <pre><code>const registeredResources = [
      'clusters',
      'users',
      'teams',
      'repositories',
      'records',
      'projects',
      'feeds',
      'feedback'
  ];
  
  function registeredResourcesOnly(url: UrlSegment[], group: UrlSegmentGroup,         route: Route) {
      return (url.length &gt; 0) &amp;&amp; (registeredResources.includes(url[0].path)) ?     ({ consumed: [url[0]] }) : null;
      }
  
      export const APP_ROUTES: Routes = [
      { 
          matcher: registeredResourcesOnly,
          canActivate: [ AuthGuard ],
          loadChildren: '../sb/resource/resource.module#ResourceModule',
      }
  ];
  </code></pre>
  
  <p>It works fine on every first request (<a href="http://localhost:4200/clusters" rel="nofollow noreferrer">http://localhost:4200/clusters</a> or <a href="http://localhost:4200/users" rel="nofollow noreferrer">http://localhost:4200/users</a> etc), but doesn't on every second request (ResourceModule does not get loaded the second time).</p>
  
  <p>It works fine with <code>path</code>, so I think it might have something to do with combining <code>matcher</code> and <code>loadChildren</code>.</p>