Aurelia 如何将子路由器注入对话框视图模型

Aurelia 如何将子路由器注入对话框视图模型,aurelia,aurelia-dialog,Aurelia,Aurelia Dialog,在我们的项目中,我们有许多自定义元素,如下所示: <entity-link id="entity.id> 并发现注入路由器的实例是错误的。 主路由器(AppRouter)没有定义实体_编辑路由,它是在子路由配置路由函数中动态添加的 我不明白为什么注入的路由器是主路由器,而不是传递给启动对话框打开的视图的路由器 请给我任何建议因此,在阅读aurelia的源代码2小时后,我发现DialogService实例是在根DI容器中创建的,该容器与根路由器关联,而根路由器不知道子路由。 我通过在

在我们的项目中,我们有许多自定义元素,如下所示:

<entity-link id="entity.id>
并发现注入路由器的实例是错误的。 主路由器(AppRouter)没有定义实体_编辑路由,它是在子路由配置路由函数中动态添加的

我不明白为什么注入的路由器是主路由器,而不是传递给启动对话框打开的视图的路由器


请给我任何建议

因此,在阅读aurelia的源代码2小时后,我发现DialogService实例是在根DI容器中创建的,该容器与根路由器关联,而根路由器不知道子路由。 我通过在子视图模型容器中手动注册DialogService实例解决了这个问题

  import {Container} from 'aurelia-dependency-injection';
  import {CompositionEngine} from 'aurelia-templating';
  import {DialogService} from 'aurelia-dialog';

  export class Main {

  constructor(container:Container, compositionEngine:CompositionEngine){
    container.registerInstance(DialogService, new DialogService(container,   compositionEngine))`
  }
     ...
  } 
但这让人感觉很不舒服,仍然怀疑是否有更干净的方法来解决这个问题

import {Router} from 'aurelia-router';
@inject(DialogController, Router)
export default class RecordDetailsDialog {
constructor(dialogController:DialogController, router:Router) {
        this.controller = dialogController;
        this.router = router;     /// WRONG INSTANCE!!!
    }
}
  import {Container} from 'aurelia-dependency-injection';
  import {CompositionEngine} from 'aurelia-templating';
  import {DialogService} from 'aurelia-dialog';

  export class Main {

  constructor(container:Container, compositionEngine:CompositionEngine){
    container.registerInstance(DialogService, new DialogService(container,   compositionEngine))`
  }
     ...
  }