angular - Angular:在 ng-zorro 模态中路由
问题描述
我有一个 Angular 项目,我在其中创建了一些可供重用的组件,它们将使用NzModalService.create()
. 例如,
// welcome.component.ts
export class WelcomeComponent {
constructor(private modal: NzModalService) {}
foo() {
this.modal.create({
nzTitle: 'This is a modal',
nzContent: SharedComponent
});
}
}
whereWelcomeComponent
是我的主要页面之一,并SharedComponent
用作创建的模式的内容。每个组件都有自己的模块和路由模块。
现在我想在上面的模式中制作一些步骤指南,并使用路由在步骤之间导航。为此,我编写了这样的代码:
step-guide.component.html
<ul nz-menu nzMode="horizontal">
<li nz-menu-item>
<a [routerlink]="'step1'">Step 1</a>
</li>
<li nz-menu-item>
<a [routerlink]="[{outlets: {stepGuide: ['step2']}}]">Step 2</a>
</li>
</ul>
<div>
<router-outlet name='stepGuide'></router-outlet>
</div>
step-guide-routing.module.ts
// imports omitted...
const routes: Routes = [
{ path: 'step1', loadChildren: () => import('../step1/step1.module').then(m => m.Step1Module) },
{ path: 'step2', outlet: 'stepGuide', loadChildren: () => import('../step2/step2.module').then(m => m.Step2Module) }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class StepGuideRoutingModule {}
我尝试了不同的方法来使其工作,但从未成功。对于上面的代码组合,当我单击第 1 步时,模式消失了,主窗口被引导到一个空白页面。当我单击第 2 步时,什么也没有发生,控制台也没有输出任何错误。从中删除名称<router-outlet>
会产生相同的结果。
我还尝试用父路径(例如{path: 'welcome', children: ...}
)包装我的路由路径,因为可以通过单击路径为 的组件中的按钮来创建app-routing.module
模式/welcome
。这会导致错误,例如welcome/step1
不匹配任何路线。
实际的问题是,模态在 HTML 中不是硬编码的,可以在不同的组件中创建,所以我不能将它绑定到特定的路径(这也不起作用。)但我希望我的路由可以工作在模态的任何地方创建它。我应该怎么办?
任何想法,将不胜感激。
解决方案
推荐阅读
- c - 为什么我的 C 程序不等待扫描输入?
- angular - 如何以角度正确地从拦截器调用服务方法
- docker - 为什么 docker-compose 卷没有正确安装?(我在 docker 中使用 nginx 和 certbot)
- kubernetes - Nginx 控制器的基于路径的路由不起作用
- uml - 如何建模一个简单的锻炼应用程序(类图)
- amazon-web-services - AWS Eventbridge 规则能否匹配数组内的对象
- windows - 如何找出用户机器上安装了哪些 Visual Studio 扩展?
- sql - 在使用 Tableau 时保存 SQL 版本的最佳方法是什么?
- javascript - If 语句始终返回 True
- bash - 获取准备好进行阶段批准的 AWS 管道列表