【发布时间】:2018-09-17 09:19:00
【问题描述】:
我在导航栏的下拉菜单中使用 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() {}
}
【问题讨论】:
-
像这样使用RouterLink:
[routerLink]="['/competenties/'+ competentie.id]"而不是routerlink="/competenties/{{competentie.id}}" -
@ShashikantDevani,后者不是和前者一样吗?
-
是的,只是一种使用 routerlink 的旧方式。仍然遇到同样的问题。
-
这不是旧方式也不是新方式。这只是做同一件事的两种不同方式。这只是使用一个比另一个更有意义的问题。
标签: php angular routing navigation angular6