在下面显示的SubjectsComponent.html中,routerLink应该导航到SubjectComponent视图,但Angular给出了一个url的noMatch错误。我还在另一个routerLink中硬编码了参数,如SubjectsComponent.html的后半部分所示,但得到了相同的错误。
<div class="container">
<div class="row text-center">
<div class="col">
<h1 style="color: var(--bs-red);">{{gradeLabel}} Subjects</h1>
<h5>Please select your subject:</h5>
<a class="" *ngFor="let subject of subjects"
[routerLink]="['/subject', grade, subject._id]">
<h1>{{subject.name}}</h1>
</a>
</div>
<div class="col-12">
<a class="login"
[routerLink]="['/subject', '9', '63e2739b3dad93238da85918']">
Testing
</a>
</div>
</div>
然而,当我把硬编码的锚标记放在一个完全不同的html,HeaderComponent.html中时,到SubjectComponent的导航工作正常。问题似乎出在SubjectsComponent.html上。从它开始的所有导航都失败了。
AppRoutingModule如下所示:
{
path: 'subject',
loadChildren: () => import('./subjects/subjects.module').then(m => m.SubjectsModule)
},
受试者组件路径模块如下所示:
const routes: Routes = [
{
path: ':grade/:subjectId',
component: SubjectComponent
},
]
SubjectComponent在主题组件模块中声明:
import { SubjectComponent } from './subject/subject.component';
@NgModule({
declarations: [
SubjectComponent,
],
imports: [
SubjectsRoutingModule
]
})
export class SubjectsModule { }
错误:
错误错误:未被抓住的(承诺中的):错误:NG04002错误:编号匹配错误处的NG04002(主文件0bf04579cd00cfcc.js:1:262866)
1条答案
按热度按时间8ulbf1ek1#
您看到的错误消息,错误:NG04002,通常是由路由器配置不正确或路由器链路中的打字错误引起的。
根据您提供的代码,问题似乎出在AppRoutingModule中的loadChildren属性。loadChildren属性应指向包含主题路径路由的模块。在本例中,它应指向SubjectsModule。
确保您的SubjectsModule使用正确的路由导出RouterModule,包括SubjectComponent。下面是SubjectsModule中路由的示例:
确认路由器配置正确后,请仔细检查 *ngFor循环中的subject对象是否存在grade和_id属性。如果其中一个属性缺失或为空,则路由器链接将无法正常工作。
最后,如果问题仍然存在,请尝试向AppRoutingModule添加通配符路由,以捕获与您定义的路由不匹配的任何路由。这可以帮助您识别路由器链接的任何拼写错误或其他问题。以下是通配符路由可能的外观示例: