4

我正在学习 Angular 和 TypeScript。现在我正在开发一个简单的应用程序,只是为了学习目的。我在使用 routeLink 时遇到问题。我的 routeLink 之一是向现有的 HTML 添加新的 HTML,而不是替换它。我有一个复杂的组件树视图和结构。

这是我的主要 app-routing.module:

const routes: Routes = [
    { path: '', loadChildren: './layout/layout.module#LayoutModule', canActivate: [AuthGuard] }
];

我的 app.component.html:

<router-outlet></router-outlet>

所以我会有独立的 LayoutModule 和它的路由配置:

const routes: Routes = [
    {
        path: '',
        component: LayoutComponent,
        children: [
             { path: 'outcome', loadChildren: './outcome/outcome.module#OutcomeModule' }
        ]
    }
];

我的 layout.component html

<app-header></app-header>
<app-sidebar></app-sidebar>
<section class="main-container">
    <router-outlet></router-outlet>
</section>

同样,我将拥有结果模块及其路由配置。

这是我的结果-routing.module 配置:

 {
    path: '',
        component: OutcomeComponent,
        children: [
            { path: '', redirectTo: 'list' },
            { path: 'list', component: ListOutcomeComponent },
            { path: 'add', component: CreateOutcomeComponent }
        ]
  },

这是我的结果.component.html:

<div [@routerTransition]>
  <h2 class="text-muted">Page Title
    <small>This is small title</small>
  </h2>
  <router-outlet></router-outlet>
</div>

所以根据我的代码,如果我访问“结果/添加”和“结果/列表”,它将使用相应的组件。在此阶段之前,我的路线配置仍然可以正常工作。当我访问“outcome/add”url 时,outcome.component.html 中的 route-outlet 将替换为“outcome/list”的 CreateOutcomeComponent 和 ListOutcomeComponent。问题始于 ListOutComponent。

这是我的 create-outcome.component.html

<div>
    <h1>Add/create new outcome</h1>
</div>

这是我的 list-outcome.component.html

<div class="row">
<div class="col-md-12">
<a class="btn btn-primary" [routerLink]="['/outcome','add']">Add new outcome <i class="fa fa-plus"></i></a>
</div>
</div>

如您所见,我在 list-outcome.component.html 中创建了一个链接(routerLink),该链接导航到“结果/添加”。因此,如果我单击该链接,当前现有的整个内容应该被 CreateOutcomeComponent 的 HTML 内容替换,包括链接(锚点)本身。但是当我单击链接时,内容不会被替换,而是会附加或附加到现有内容中。

当我访问“结果/列表”时,这就是我所看到的:

在此处输入图像描述

如果我单击该按钮,它应该被 CreateOutcomeComponent 中的内容替换。但这发生了,当我这样做的时候。

在此处输入图像描述

正如您在屏幕截图中看到的那样,内容被添加到现有内容的顶部。但它应该被替换。为什么是这样?我该如何解决这个问题?

但是,当我直接从进入浏览器的 URL 访问“结果/添加”时,它按预期工作。

在此处输入图像描述

4

0 回答 0