【发布时间】:2020-04-14 17:03:16
【问题描述】:
当我尝试加载主组件时遇到 route-let 问题。
app-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AddIssueComponent } from './components/add-issue/add-issue.component';
import { EditIssueComponent } from './components/edit-issue/edit-issue.component';
import { IssueListComponent } from './components/issue-list/issue-list.component';
import { ExampleRouteResolver } from './shared/example-route.resolver';
import { SearchareaComponent } from './components/searcharea/searcharea.component';
import { AdvDetailsComponent } from './components/adv-details/adv-details.component';
import { SearchResultComponent } from './components/search-result/search-result.component';
import { AsideSidebarComponent } from './components/aside-sidebar/aside-sidebar.component';
import { UserLoginComponent } from './components/user-login/user-login.component';
const routes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: 'issues-list' },
{ path: 'searcharea', component: SearchareaComponent},
{ path: 'add-issue', component: AddIssueComponent},
{ path: 'edit-issue/:id', component: EditIssueComponent },
{ path: 'issues-list', component: IssueListComponent/* ,children: [
{path: 'edit-issue/:id', component: EditIssueComponent},
{path: 'add-issue', component: AddIssueComponent}
],
resolve: {results: ExampleRouteResolver},
runGuardsAndResolvers: 'always'*/
} ,
{ path: 'adv-list', component: AdvDetailsComponent },
{ path: 'search-result/:value', component: SearchResultComponent },
{ path: 'login', component: UserLoginComponent },
{ path: 'aside-sidebar', component: AsideSidebarComponent, outlet:'sidebar'}
];
@NgModule({
imports: [RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload'})],
exports: [RouterModule]
})
export class AppRoutingModule { }
app.component.html
<app-app-header></app-app-header>
<!-- <app-app-header (searchListOutput)="searchListOutput($event)"> </app-app-header> -->
<div style="display: flex;">
<router-outlet></router-outlet>
<router-outlet name="sidebar"></router-outlet>
</div>
<!-- <div>
translation: translation pipe
<h1>{{ 'demo.title' | translate }}</h1>
translation: directive (key as attribute)
<p [translate]="'demo.text'"></p>
translation: directive (key as content of element)
<p translate>demo.text</p>
<button (click)="switchLanguage('en')">en</button>
<button (click)="switchLanguage('fr')">de</button>
</div> -->
<div>
<app-app-footer></app-app-footer>
</div>
aside-sidebar.component.html:
<div style="width: 25%;">
<div class="rightcolumn" style="margin: 10px;">
<div class="leftbar">
<div class="card">
<h2>About Me</h2>
<div class="fakeimg" style="height:100px;">Image</div>
<p>Some text about me in culpa qui officia deserunt mollit anim..</p>
</div>
</div>
<div class="leftbar">
<div class="card">
<h3>Popular Post</h3>
<div class="fakeimg">
<p>Image</p>
</div>
<div class="fakeimg">
<p>Image</p>
</div>
<div class="fakeimg">
<p>Image</p>
</div>
</div>
</div>
<div class="leftbar">
<div class="card">
<h3>Follow Me</h3>
<p>Some text..</p>
</div>
</div>
<div class="leftbar">
<div class="card">
<h3>Popular Post</h3>
<div class="fakeimg">
<p>Image</p>
</div>
<div class="fakeimg">
<p>Image</p>
</div>
<div class="fakeimg">
<p>Image</p>
</div>
</div>
</div>
<div class="leftbar">
<div class="card">
<h3>Popular Post</h3>
<div class="fakeimg">
<p>Image</p>
</div>
<div class="fakeimg">
<p>Image</p>
</div>
<div class="fakeimg">
<p>Image</p>
</div>
</div>
</div>
<div class="leftbar">
<div class="card">
<h3>Popular Post</h3>
<div class="fakeimg">
<p>Image</p>
</div>
<div class="fakeimg">
<p>Image</p>
</div>
<div class="fakeimg">
<p>Image</p>
</div>
</div>
</div>
</div>
aside-sidebar.component.ts:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-aside-sidebar',
templateUrl: './aside-sidebar.component.html',
styleUrls: ['./aside-sidebar.component.css']
})
export class AsideSidebarComponent {
constructor() { }
}
我在这里尝试访问http://localhost:4200/aside-sidebar
我收到以下错误:
core.js:7187 ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'aside-sidebar'
Error: Cannot match any routes. URL Segment: 'aside-sidebar'
at ApplyRedirects.noMatchError (router.js:3410)
at CatchSubscriber.selector (router.js:3374)
at CatchSubscriber.error (catchError.js:29)
at MapSubscriber._error (Subscriber.js:75)
at MapSubscriber.error (Subscriber.js:55)
at MapSubscriber._error (Subscriber.js:75)
at MapSubscriber.error (Subscriber.js:55)
at MapSubscriber._error (Subscriber.js:75)
at MapSubscriber.error (Subscriber.js:55)
at TapSubscriber._error (tap.js:56)
at resolvePromise (zone-evergreen.js:797)
at resolvePromise (zone-evergreen.js:754)
at zone-evergreen.js:858
at ZoneDelegate.invokeTask (zone-evergreen.js:391)
at Object.onInvokeTask (core.js:30885)
at ZoneDelegate.invokeTask (zone-evergreen.js:390)
at Zone.runTask (zone-evergreen.js:168)
at drainMicroTaskQueue (zone-evergreen.js:559)
当我删除 outlet { path: 'aside-sidebar', component: AsideSidebarComponent, outlet:'sidebar'} outlet 参数并尝试访问它时,同样可以正常工作。
组件在默认路由器插座中加载良好。
我能知道我的代码哪里出错了吗?
【问题讨论】:
-
可以尝试通过示例演示在 stackblitz 上重现该问题吗?
-
如何在 app.component.html 中调用路由器侧边栏?表示使用
routerLink或router.navigate()方法。 -
在 html 文件中添加
<a [routerLink]="['/aside-sidebar', {outlets: {'sidebar': ['aside-sidebar']}}]"> </a>
标签: angular routing angular-routing