Angular 模态组件中的 routerLink 指令未按预期工作
Angular routerLink directive in modal component not working as expected
我在 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 所以我建议从路由器的角度来看,当我打开模式时没有任何变化。
在弹出组件和首选项组件中,我都有 link 这样的:
<div class="rule" routerLink="../rules/new">
问题是我从弹出组件被重定向到 404,而从首选项我导航到右侧 url。
问题的描述可能看起来过于复杂,如果您有这样的感觉,我们深表歉意:) 我尽量简化了事情。
我已经通过使用来自控制器的 router.navigate 解决了问题,传递激活的路由实例,如下所示:
this.router.navigate(['../../preferences'], { relativeTo: this.route });
我在 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 所以我建议从路由器的角度来看,当我打开模式时没有任何变化。
在弹出组件和首选项组件中,我都有 link 这样的:
<div class="rule" routerLink="../rules/new">
问题是我从弹出组件被重定向到 404,而从首选项我导航到右侧 url。
问题的描述可能看起来过于复杂,如果您有这样的感觉,我们深表歉意:) 我尽量简化了事情。
我已经通过使用来自控制器的 router.navigate 解决了问题,传递激活的路由实例,如下所示:
this.router.navigate(['../../preferences'], { relativeTo: this.route });