#javascript #html #angular #angular-material
#javascript #HTML #angular #angular-материал
Вопрос:
У меня проблема с меню, предоставляемым Angular Material. Когда я нахожусь на странице, связанной с одним из пунктов меню, и пытаюсь изменить содержимое на другое меню (нажав на пункт) Я не вижу никаких изменений содержимого.
<button mat-button [matMenuTriggerFor]="tracksMenu" style="color: white">Songs</button>
<mat-menu #tracksMenu="matMenu" yPosition="below">
<button mat-menu-item [routerLink]="['/tracks/techno']">Techno</button>
<button mat-menu-item [routerLink]="['/tracks/club']">Club</button>
<button mat-menu-item [routerLink]="['/tracks/dance']">Dance</button>
</mat-menu>
Однако, если я нахожусь на другой странице, которая не имеет ничего общего с меню, и я пытаюсь перейти к одному из них, все работает нормально. Основная проблема заключается в перемещении между вкладками для одного меню.
Более того, я вижу, что после нажатия на элемент URL-адрес в строке браузера меняется, но содержимое остается прежним.
Конечно, я могу это исправить, перезагрузив всю страницу содержимого (например, используя один из методов javascript), но я предпочитаю оптимизировать решение и загружать только выбранную часть страницы
есть идеи?
Ниже приведены части кода, отвечающие за отображение содержимого
constructor(private trackService: TrackService,
private route: ActivatedRoute,
private sanitizer: DomSanitizer) {
this.sub = this.route.params.subscribe(params => {
this.genre = params.genre;
this.currentPage = params.page || 1;
});
this.trackService.getTrackPageByGenre(this.genre, this.currentPage - 1).subscribe(trackResponse => {
this.totalNumberOfTracks = trackResponse.totalElements;
this.numberOfPage = trackResponse.numberPage;
this.totalNumberOfPages = trackResponse.totalPages;
this.tracks = trackResponse.trackList;
this.secureAllUrl(this.tracks);
});
}
<div class="reddit-body">
<div class="container">
<hr />
<app-track-tile [tracks]="tracks"
[totalNumberOfTracks]="totalNumberOfTracks"
[currentPage]="currentPage"
[totalNumberOfPages]="totalNumberOfPages"
>
</app-track-tile>
<div *ngIf="totalNumberOfPages > 1" style="text-align: center;">
<span class="pagination">
<a *ngIf="currentPage > 1" type='button' href="app/tracks/{{genre}}/{{previousPage(currentPage)}}">amp;laquo;</a>
</span>
<span class="pagination">
<a class="active" type='button' href="app/tracks/{{genre}}/{{currentPage}}">{{currentPage}} / {{totalNumberOfPages}}</a>
</span>
<span class="pagination">
<a *ngIf="currentPage < totalNumberOfPages" type='button' href="app/tracks/{{genre}}/{{nextPage(currentPage)}}">amp;raquo;</a>
</span>
</div>
Комментарии:
1. Вы говорите, что URL-адрес изменяется, поэтому ссылки, похоже, работают; можете ли вы опубликовать соответствующие части, которые отображают основное содержимое?
2. @ChrisG Я уже добавил
3. Проблема, вероятно, в том, что вы фактически остаетесь в том же компоненте. Самое простое решение — переместить вашу логику внутри подписки на маршрутизатор.