2016-07-15 37 views
3

我有具有以下HTML模板选项卡组件TabComponent:接入[routerLinkActive]在组件类值

<a [routerLink]='link' [routerLinkActive]="[is-active]">link label</a> 
<button>Close tab</button> 

我想访问[routerLinkActive]属性的值,基本上我想在组件类内部获取一个指示这个routerLink是否处于活动状态的变量。我如何从组件类中访问它?

编辑:我想如果我可以访问链接标记的<a>链接标记的CSS类,那么有没有办法访问它?

+0

'routerLinkActive'没有公共属性来访问状态。您可以复制代码并将其调整为您的需要以获取活动状态https://github.com/angular/angular/blob/dabf214f170eda8e1ecd2ff4ab252738e7aa0ddb/modules/%40angular/router/src/directives/router_link_active.ts –

+0

阅读CSS上课很难看。在Angular2中,DOM应该反映模型(使用绑定),但控制器应避免直接访问DOM。 –

回答

4

我不知道这是否会在所有帮助,但是,你可以得到价值在你的模板是这样的:

<a *ngFor="let child of directory; let i = index;" 
    routerLink="{{child.route}}" 
    routerLinkActive #rla="routerLinkActive"> 

    <h3>{{rla.isActive}}</h3><!--Displays boolean indicating whether or not you are navigated to this link--> 
</a> 

现在,一个布尔值会在你的H3显示指示你是否是目前导航到链接。

虽然这可以作为一个模板变量,我一直无法将值传递给component.ts或传给其他模板指令e.g

<a *ngFor="let child of directory; let i = index;" 
    routerLink="{{child.route}}" 
    routerLinkActive #rla="routerLinkActive" 

    [active]="rla.isActive" <!--This doesn't insert the boolean here for some reason--> 
    >  
    <h3>{{rla.isActive}}</h3> 
</a> 

我希望这有助于。如果你接近一个好的解决方案,请更新。