php - Angular 6 navbar routerlink 重新加载组件
问题描述
我在导航栏的下拉菜单中使用 angular 6 和 routerlink。我面临的问题是 routerlink 没有重新加载网站,因此也没有重新加载路由。当按下下拉列表中的按钮时,它最初会正确加载,但是当用户按下下拉列表中的另一个按钮(同时仍在下拉列表的另一个子页面上)时,它不会重新加载页面上的内容,而是更改 URL。使用 Href 时,它会正确加载所有内容。
<div
ngbDropdownMenu
class="dropdown-menu"
aria-labelledby="navbarDropdown">
<div *ngFor="let competentie of competenties">
<a
class="dropdown-item"
routerlink="/competenties/{{competentie.id}}">
{{competentie.name}}
</a>
</div>
</div>
这迫使我使用 href 而不是 routerlink 来重新加载页面,以便组件重新加载并显示具有正确 {{competentie.id}} 的内容。
有没有办法使用 routerlink 导航到另一个下拉页面并更新页面上的内容?
编辑
详细信息组件:
export class CompetentieComponent implements OnInit {
competentie: Competentie;
constructor(private route: ActivatedRoute,
private competentieService: CompetentieService,
private location: Location
) {
}
getCompetentie(): void {
const id = +this.route.snapshot.paramMap.get('id');
this.competentieService.getCompetentie(id)
.subscribe(competentie => this.competentie = competentie);
}
ngOnInit() {
this.getCompetentie();
}
}
我的路线:
const routes: Routes = [
{path: 'competenties/:id', component: CompetentieComponent}
];
该服务从具有数组 COMPETENTIES[] 的类中获取数据:
export class CompetentieService {
getCompetenties(): Observable<Competentie[]> {
return of(COMPETENTIES);
}
getCompetentie(id: number): Observable<Competentie> {
return of(COMPETENTIES.find(competentie => competentie.id === id));
}
constructor() {}
}
解决方案
您正在使用this.route.snapshot.paramMap.get('id')
它只会触发一次。您应该使用params
而不是snapshot.paramMap.get('id')
. params
是一个BehaviorSubject
订阅,id
每次更改时都会为您提供更新。
ActivatedRoute
您应该将其作为依赖项注入,然后订阅params
它的属性。
export class CompetentieComponent implements OnInit {
competentie: Competentie;
constructor(private route: ActivatedRoute,
private competentieService: CompetentieService,
private location: Location
) {}
getCompetentie(): void {
this.activatedRoute.params.subscribe(params => {
let latestID = +params['id'];
this.competentieService.getCompetentie(latestID)
.subscribe(competentie => this.competentie = competentie);
});
}
ngOnInit() {
this.getCompetentie();
}
}
推荐阅读
- java - Hibernate Envers 在持久化数据后立即获得修订
- r - 改进 dplyr 解决方案 -- 根据其他信息通过条件排序(位置)创建变量
- heroku - 我需要升级 Heroku 中的数据库以支持超过 10K 行,因此在 Heroku 上将 hobby-dev 升级为 hobby-basic
- python - PyCharm - 安装打包工具时出现 Packaging_tool.py 错误
- javascript - 如何使用 D3 将带有摘要行的 HTML 表格条目分组到详细信息行上方
- python - Pyinstaller 生成的 exe 无法正常工作
- python - Python3.6 的 urlopen 对“一些”URL 调用 403s
- c# - Fody Costura 不嵌入 SkiaSharp DLL
- tensorflow - 多个训练模型 vs 多个特征和一个模型
- peoplesoft - 应用程序引擎人员代码绑定变量