【发布时间】:2018-07-10 12:09:18
【问题描述】:
我遇到了一个奇怪的问题:使用 routerLink 我可以在任何地方导航,但是如果我向当前路由添加另一个路由参数,它就不起作用了。
这是我的 navigator.component。我使用以下代码将 URL 传递给我的 app-card 组件。
<div class="installations-grid" *ngIf="installations != null">
<div class="no-cards" *ngIf="installations.length == 0"><p i18n="no_installations| no installations string">Nessuna installazione per questo progetto</p></div>
<div class="box-cards" *ngFor="let installation of installations">
<app-card [title]="installation.name" [image-url]="installation.url" [content-text]="installation.id" [url]="'/dashboard/map/' + project.id + '/' + installation.id"></app-card>
</div>
这就是我在 app-card 组件中使用该 url 的地方:
<mat-card class="card-component" [routerLink]='model.url'>...</mat-card>
我会导航到类似 /dashboard/map/1/2/ 的位置。 此路由与另一个组件相关联。这些是我的仪表板模块路线:
[{
path: 'map/:projectId/:installationId',
component: MapNavigatorComponent,
canActivate:[AuthGuardService],
resolve: {
maps: NavigatorResolver
},
data: {
searchBar: {
enabled: true,
autocomplete: true,
searchType: 'vin'
},
permission: {
only: [''], // TODO: mettere il permesso vero
redirectTo: 'login'
}
}
},
{
path: 'map/:projectId',
component: InstallationNavigatorComponent,
canActivate:[AuthGuardService],
resolve: {
installations: NavigatorResolver
},
data: {
searchBar: {
enabled: true,
autocomplete: true,
searchType: 'vin'
},
permission: {
only: [''], // TODO: mettere il permesso vero
redirectTo: 'login'
}
}
},
{
path: 'map',
component: ProjectsNavigatorComponent,
canActivate:[AuthGuardService],
resolve: {
projects: NavigatorResolver
},
data: {
searchBar: {
enabled: true,
autocomplete: true,
searchType: 'vin'
},
permission: {
only: [''], // TODO: mettere il permesso vero
redirectTo: 'login'
}
}
}];
任何其他路由(如 /login)都会正常运行... 我认为可能导致这种行为的一些因素:
- InstallationNavigatorComponent 和 MapNavigatorComponent 都扩展了另一个基础组件(NavigatorComponent);
- 仪表板模块是延迟加载的;
有什么线索吗?
注意:到达 NavigatorResolver,但地址栏中的 URL 和显示的组件模板保持不变。
【问题讨论】:
标签: angular typescript angular6