【问题标题】:Error: Cannot match any routes. URL Segment: - Angular 2错误:无法匹配任何路由。 URL 段: - Angular 2
【发布时间】:2017-09-25 04:54:21
【问题描述】:

我是 angular2 的新手。我试图了解如何在特定模板中使用多个 <router-outlets>。我在这里进行了许多 QA,但无法解决我的错误。

router.module.ts

const routes: Routes = [
{
    path: '',
    redirectTo: 'one',
    pathMatch: 'full'
},
{
    path: 'two',
    component: ClassTwo, children: [
        {
            path: 'three',
            component: ClassThree,
            outlet: 'nameThree',
        },
        {
            path: 'four',
            component: ClassFour,
            outlet: 'nameFour'
        }
    ]
},];

component1.html

<h3>In One</h3>

<nav>
    <a routerLink="/two" class="dash-item">...Go to Two...</a>
    <a routerLink="/three" class="dash-item">... Go to THREE...</a>
    <a routerLink="/four" class="dash-item">...Go to FOUR...</a>
</nav>

<router-outlet></router-outlet>                   // Successfully loaded component2.html
<router-outlet name="nameThree" ></router-outlet> // Error: Cannot match any routes. URL Segment: 'three'
<router-outlet name="nameFour" ></router-outlet>  // Error: Cannot match any routes. URL Segment: 'three'

component2.html

<h3>In two</h3>

component3.html

<h3>In three</h3>

component4.html

<h3>In four</h3>

下面的截图是我当前的输出:

当我点击 ...转到两个... 在两个 被打印出来。 但是点击其他两个链接会给我错误无法匹配任何路线

【问题讨论】:

  • 路由器出口是另一个ro,你必须用导航器处理它们
  • 我应该如何以及在哪里给先生? @RomanC​​pan>
  • 我认为它在router

标签: angular angular2-routing


【解决方案1】:

自己解决了。也做了一些小的结构变化。从 Component1Component2 的路由由单个 &lt;router-outlet&gt; 完成。 Component2Comonent3Component4 是由多个&lt;router-outlet name= "xxxxx"&gt; 完成的,结果内容是:

Component1.html

<nav>
    <a routerLink="/two" class="dash-item">Go to 2</a>
</nav>
    <router-outlet></router-outlet>

Component2.html

 <a [routerLink]="['/two', {outlets: {'nameThree': ['three']}}]">In Two...Go to 3 ...       </a>
 <a [routerLink]="['/two', {outlets: {'nameFour': ['four']}}]">   In Two...Go to 4 ...</a>

 <router-outlet name="nameThree"></router-outlet>
 <router-outlet name="nameFour"></router-outlet>

'/two' 代表父组件,['three']['four'] 代表到 component2 各自子组件的链接 . Component3.html 和 Component4.html 同题。

router.module.ts

const routes: Routes = [
{
    path: '',
    redirectTo: 'one',
    pathMatch: 'full'
},
{
    path: 'two',
    component: ClassTwo,
    children: [
        {
            path: 'three',
            component: ClassThree,
            outlet: 'nameThree'
        },
        {
            path: 'four',
            component: ClassFour,
            outlet: 'nameFour'
        }
    ]
}];

【讨论】:

    【解决方案2】:

    请将您的 router.module.ts 修改为:

    const routes: Routes = [
    {
        path: '',
        redirectTo: 'one',
        pathMatch: 'full'
    },
    {
        path: 'two',
        component: ClassTwo, children: [
            {
                path: 'three',
                component: ClassThree,
                outlet: 'nameThree',
            },
            {
                path: 'four',
                component: ClassFour,
                outlet: 'nameFour'
            },
            {
               path: '',
               redirectTo: 'two',
               pathMatch: 'full'
            }
        ]
    },];
    

    在你的 component1.html

    <h3>In One</h3>
    
    <nav>
        <a routerLink="/two" class="dash-item">...Go to Two...</a>
        <a routerLink="/two/three" class="dash-item">... Go to THREE...</a>
        <a routerLink="/two/four" class="dash-item">...Go to FOUR...</a>
    </nav>
    
    <router-outlet></router-outlet>                   // Successfully loaded component2.html
    <router-outlet name="nameThree" ></router-outlet> // Error: Cannot match any routes. URL Segment: 'three'
    <router-outlet name="nameFour" ></router-outlet>  // Error: Cannot match any routes. URL Segment: 'three'
    

    【讨论】:

      猜你喜欢
      • 2019-01-16
      • 2019-06-16
      • 2017-11-13
      • 2022-08-18
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      相关资源
      最近更新 更多