为了更好地理解这个概念,我正在试验Angular 布线.当我单击About链接时,我收到异常NG04002: Cannot match any routes. URL Segment: 'about',该链接正在路由到名为outlet1的辅助router-outlet.路由到主router-outlet工作良好.我不明白为什么它不想转到辅助队router-outlet? *这是我的app.Component.html

<div style="text-align:center">
  <h1>
    Welcome to {{title}}!!
  </h1>
  <nav>
    <div class="container">
      <div class="row">
        <div class="col-2">
          <a routerLink="home" routerLinkActive="active"><button type="button" class="btn btn-primary">
              Home</button></a>
        </div>
        <div class="col-2">
          <a routerLink="about"><button type="button" class="btn btn-primary">
              About</button></a>
        </div>

        <div class="col-1">
          <a routerLink="dashboard"><button type="button" class="btn btn-primary">
              Dashboard</button></a>
        </div>
      </div>
    </div>
</nav>
  <router-outlet></router-outlet>
  <div >
    <button type="button" class="btn btn-primary">Primary</button>
    <button type="button" class="btn btn-secondary">Secondary</button>
    <button type="button" class="btn btn-success">Success</button>
    <button type="button" class="btn btn-danger">Danger</button>
    <button type="button" class="btn btn-warning">Warning</button>
    <button type="button" class="btn btn-info">Info</button>
    <button type="button" class="btn btn-light">Light</button>
    <button type="button" class="btn btn-dark">Dark</button>

    <button type="button" class="btn btn-link">Link</button>
  </div>
</div>
<router-outlet name="outlet1"></router-outlet>

这是我的应用程序-routing.mode.ts

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { AboutComponent } from './components/about/about.component';
import { DashboardComponent } from './components/dashboard/dashboard.component';
import { AuthGuard } from './auth.gard';

const routes: Routes = [
  { path: 'home',
    component: HomeComponent
  },
  {
    path: 'about', canActivate: [AuthGuard],
    component: AboutComponent, outlet:"outlet1",
  },
  { path: 'dashboard',
    component: DashboardComponent
  }];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

推荐答案

routerLink必须指定插座,并使用不同的语法

当您正常导航时,它将始终导航到主路由/主路由插座(<router-outlet></router-outlet>)

因为我们需要访问辅助路由/辅助router-outlet (<router-outlet name="outlet1"></router-outlet>)

我们必须用不同的方式来定义它!

[routerLink]="[‘’,{Outlets:{outlet1:[‘About’]}}]" 1 2 3 4

  1. 主要路由-我们没有在任何地方导航,所以我们将其设置为''(相同路由)

  2. Outlets-我们在其中指定所需的Outlet导航的Outlets对象

  3. Outlet1-我们要导航的次要网点的名称

  4. 插座导航路径-命名的路由路径,因此我们要导航到'about'

供参考的文档:

  1. Router Link

  2. Display multiple routes in named outlets

  3. Router Outlet

之前:

<a routerLink="about"><button type="button" class="btn btn-primary">
          About</button></a>

之前:

<a [routerLink]="['', { outlets: { outlet1: ['about'] } }]"><button type="button" class="btn btn-primary">
          About</button></a>

Typescript相关问答推荐

类型脚本不会推断键的值类型

相同端点具有不同响应时的RTKQuery类型定义

键集分页顺序/时间戳上的筛选器,精度不相同

使用泛型keyof索引类型以在if-condition内类型推断

如何使用Zod使一个基于其他字段值的字段为必填字段?

STypescript 件的标引签名与功能签名的区别

角效用函数的类型推断

如何使用类型谓词将类型限制为不可赋值的类型?

使用2个泛型类型参数透明地处理函数中的联合类型

在类型脚本中创建泛型类型以动态追加属性后缀

在列表的指令中使用intersectionObservable隐藏按钮

map 未显示控制台未显示任何错误@reaction-google-map/api

TaskListProps[]类型不可分配给TaskListProps类型

有没有一种更好的方法来存储内存中的数据,而不是在类型脚本中使用数组和基于索引的函数?

为什么`map()`返回类型不能维护与输入相同数量的值?

Vite+Chrome扩展 list v3-;不能在模块外使用import语句;对于inpage脚本

组件使用forwardRef类型脚本时传递props

Typescript 确保通用对象不包含属性

在 next.js 13.4 中为react-email-editor使用forwardRef和next/dynamic的正确方法

通用可选函数参数返回类型