CSS не применяется к ссылке, когда она активна

У меня есть следующая ссылка:

<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;}

Рассмотрим шаги:

  1. Щелкните ссылку /posts/1/about, которая ведет на страницу /posts/1/about.
  2. Щелкните ссылку, которая открывает модальное окно с формой, и нажмите кнопку сохранить, которая запустится:

    this.tagService.create (tagName) .subscribe (

    (next) => { 
      this.router.navigate(['/posts', next.postId, 'about' ]);
    }
    

    );

    Я перенаправлен на /posts/1/about, и ссылка, как и ожидалось, оранжевая.

  3. Щелкните ссылку, которая снова открывает модальное окно, и сделайте то же, что и в (2).

    Меня перенаправили, как и ожидалось, но теперь меню не оранжевого цвета ...

Кажется, что способ, которым я попал на страницу до открытия модального окна, щелчка по ссылке или использования this.router.navigate, делает ссылку оранжевой или нет после того, как я использую this.route.navigate во второй раз.

Разве это не странно?


person Miguel Moura    schedule 09.01.2020    source источник
comment
Где определяется ваш CSS? И какой ViewEncapsulation вы используете в своих компонентах?   -  person Alex K    schedule 09.01.2020
comment
Я использую вариант по умолчанию, так как не меняю его. Я полагаю, Эмулировал? Ссылка, которую я опубликовал, находится в меню компонента html, а css находится в том же меню компонента без кода. Я обновил свой вопрос кодом компонента.   -  person Miguel Moura    schedule 09.01.2020
comment
попробуйте определить css как просто .active{color:orange}, см. здесь angular.io/api/router/RouterLinkActive   -  person Farasi78    schedule 09.01.2020
comment
Можете ли вы создать StackBlitz, чтобы воссоздать проблему?   -  person Alex K    schedule 09.01.2020
comment
Когда вы проверяете его и смотрите на наследование стилей, ваш селектор CSS используется, но, возможно, переопределяется? Определен ли CSS в компоненте или где-то еще? Если это в компоненте, это css, завернутый в :host { <css> }?   -  person Chris W.    schedule 09.01.2020
comment
Вы можете это попробовать? a[routerLinkActive="active"]{color:orange;}   -  person Schwarz54    schedule 09.01.2020
comment
@ Farasi78 ​​Я пробовал много вариантов, таких как a.active { color: orange }, .active { color: orange }, a.active:link { color: orange }, и я заметил, что несколько раз он выглядит оранжевым, но в большинстве случаев нет ... Это даже не согласовано. Понятия не имею, почему.   -  person Miguel Moura    schedule 09.01.2020
comment
@MiguelMoura stackbliz будет полезен. Вы также можете попробовать <a [routerLink]="['/posts', id, 'about']" [routerLinkActive]="active">Post</a> и в css .active{color:orange}   -  person Farasi78    schedule 09.01.2020
comment
@Eliseo, что-то по ссылке, которую вы разместили, отличается от того, что я делаю? Я не могу найти разницы.   -  person Miguel Moura    schedule 09.01.2020
comment
@ Farasi78 ​​Я просто создаю пример Stackblitz, чтобы попытаться воспроизвести   -  person Miguel Moura    schedule 09.01.2020
comment
@ Farasi78 ​​У меня есть следующее: stackblitz.com/edit/angular-popup-active но в этом примере он работает нормально ... поэтому я пытаюсь понять, что изменилось в моем коде, чтобы попытаться воспроизвести это.   -  person Miguel Moura    schedule 09.01.2020
comment
@MiguelMoura - хорошая сделка ... убедитесь, что у вас нет другого класса css '.active', который может переопределять ваши настройки. Удачи!   -  person Farasi78    schedule 09.01.2020