Aurelia carga rutas dinámicamente / desde fetch

Quiero cargar las opciones del menú dinámicamente. así que me pregunto cuál es el mejor enfoque

Puedo usar el siguiente código para agregar rutas después de cargar la página. Esto funciona para la navegación normal, pero no funciona durante una actualización.

¿Puede configurar el enrutador devolver una promesa / cómo puedo cargar elementos de menú en la ruta?

 @inject(HttpClient)
 export class DocumentMenu {
  router: Router;
  documents : IDocument[];
  heading = 'Document Router';

  constructor(public http: HttpClient) {}

 activate(): void {

    this.http.fetch('http://localhost:17853/Document/GetDocuments?folderID=13244')
      .then<IDocument[]>(response => response.json())
      .then<IDocument[]>(docs => {    
      if ( docs ){
        for( var doc of docs){
          this.router.addRoute( { route : doc.DocumentID.toString(), name : doc.Name, moduleId: './documents/document', nav:true, title: doc.Name });
        }
        this.router.refreshNavigation();
      }
      return docs;
    });

 }

configureRouter(config: RouterConfiguration, router: Router) {

  var routes = new Array();
  routes.push( 
  { route: 'index', name: 'index-name', moduleId: './documents/index', nav: false, title: 'Documents' } );
  routes.push(       { route: '', redirect: 'index' } );

  config.map( routes );
  this.router = router;
}
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta