Angular4路由器:添加routerLinkActive类时的事件

时间:2017-06-09 19:28:19

标签: angular router

我有一个简短的问题我想选择活动的路由类,它是用Angular4定义的,如下所示:

$(".navigation > nav.side > ul > li.active ul.sublist").show();

目前,我在Angular的onInit()方法中调用此方法,但这不起作用。我发现当routerLinkActive方法被触发时,onInit()类没有被添加。现在我的问题是:当路由器完成添加这些类时是否会触发事件?我需要一个仅在页面重新加载时触发一次的事件!

我有一点解决方法,但这并不是真的不可靠:

onInit(): void {
    setTimeout(() => {
        $(".navigation > nav.side > ul > li.active ul.sublist").show();
    }, 1);
}

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试在Angular应用中使用jQuery。角度民众会建议这样做" Angular"方式,我也建议。如果您想在当前routerLinkactive时应用某些CSS,则可以执行类似

的操作
<a routerLink="/user/bob" routerLinkActive="active-link">Bob</a>

来自https://angular.io/docs/ts/latest/api/router/index/RouterLinkActive-directive.html

如果您尝试显示该特定元素,则可以使用绑定到要隐藏的元素的ngIf或[hidden]。

您的观点

<navigation>
  <nav class="side">
    <ul>
      <li class="active">
        <ul class="sublist" *ngIf="showSublist">
        <-- or
        <ul class="sublist" [hidden]="!showSublist">

!ngIf评估显示:none而hidden是隐藏的可见性

组件将是

showSubList() {
    this.showSublist = true;
}