У меня есть следующая ссылка:
<a [routerLink]="['/posts', id, 'about']" routerLinkActive="active">Post</a>
И следующий CSS:
a.active {
color: orange;
}
Компонент, содержащий этот HTML и CSS:
@Component({
selector: 'menu',
templateUrl: './menu.component.html',
styleUrls: ['./menu.component.less']
})
export class MenuComponent {
@Input() menuType: string;
constructor(private route: ActivatedRoute) { }
}
Если я щелкну ссылку, якорь будет иметь класс active
и оранжевый.
Но если бы я запустил следующую команду из другого компонента:
this.tagService.create(tagName).subscribe(
(next) => {
this.router.navigate(['/posts', next.postId, 'about' ]);
}
);
В этом случае я перенаправляюсь на страницу, ссылка имеет класс active
, но не оранжевого цвета.
Есть идеи, что мне не хватает?
Обновить
После некоторых тестов я обнаружил, что ссылка становится оранжевой не зависит от использования:
.active {color: orange;}
a.active {color: orange;}
a[routerLinkActive="active"] {color:orange;}
Рассмотрим шаги:
- Щелкните ссылку
/posts/1/about
, которая ведет на страницу/posts/1/about
. Щелкните ссылку, которая открывает модальное окно с формой, и нажмите кнопку сохранить, которая запустится:
this.tagService.create (tagName) .subscribe (
(next) => { this.router.navigate(['/posts', next.postId, 'about' ]); }
);
Я перенаправлен на
/posts/1/about
, и ссылка, как и ожидалось, оранжевая.Щелкните ссылку, которая снова открывает модальное окно, и сделайте то же, что и в (2).
Меня перенаправили, как и ожидалось, но теперь меню не оранжевого цвета ...
Кажется, что способ, которым я попал на страницу до открытия модального окна, щелчка по ссылке или использования this.router.navigate
, делает ссылку оранжевой или нет после того, как я использую this.route.navigate
во второй раз.
Разве это не странно?
.active{color:orange}
, см. здесь angular.io/api/router/RouterLinkActive - person Farasi78   schedule 09.01.2020:host { <css> }
? - person Chris W.   schedule 09.01.2020a[routerLinkActive="active"]{color:orange;}
- person Schwarz54   schedule 09.01.2020a.active { color: orange }
,.active { color: orange }
,a.active:link { color: orange }
, и я заметил, что несколько раз он выглядит оранжевым, но в большинстве случаев нет ... Это даже не согласовано. Понятия не имею, почему. - person Miguel Moura   schedule 09.01.2020<a [routerLink]="['/posts', id, 'about']" [routerLinkActive]="active">Post</a>
и в css.active{color:orange}
- person Farasi78   schedule 09.01.2020