1

我在 NgbModal 中使用 routerLink 指令时遇到了非常奇怪的情况。首先,我有结构如下的功能模块:

-feature/
  -components/
    -popup-component/
      popup-component.ts
    -preferences-component/
      preferences-component.ts
    index.ts
  +containers/
  feature-routing.module.ts
  feature.module.ts

路由定义如下(简化):

export const routes: Routes = [
  {
    path: '',
    component: ContainerPageComponent
  },
  {
    path: ':id',
    component: AnotherContainerPageComponent,
    children: [
      { path: '', redirectTo: 'some-route' },
      { path: 'preferences', component: PreferencesComponent },
      { path: 'rules/new', component: OtherComponent }
    ]
  }
];

我有从首选项组件打开的模式,如下所示:

  addRulePopup() {
    const ref = this.modalService.open(PopupComponent, {
      backdrop: 'static',
      centered: true,
      size: 'lg',
      backdropClass: 'bg-white-opaque force-opaque no-border',
      windowClass: 'no-border'
    });
    ref.result.then(e => {
      console.log(e);
    });
  }

打开模态时我不会更改 url,所以我建议从路由器的角度来看,当我打开模态时没有任何变化。

在弹出组件和首选项组件中,我都有这样的链接:

<div class="rule" routerLink="../rules/new">

问题是从弹出组件我被重定向到 404,而从首选项我导航到正确的 url。

问题的描述可能看起来过于复杂,如果你觉得很抱歉:) 我试图简化事情。

4

1 回答 1

0

我已经通过使用控制器中的 router.navigate 解决了这个问题,传递激活的路由实例,如下所示:

this.router.navigate(['../../preferences'], { relativeTo: this.route });

于 2020-02-04T14:37:51.663 回答