2017-05-08 3 views
1

ich eine andere Markup für aktive und inaktive Menüpunkte angezeigt werden soll, so dass aktiver Menüpunkt nicht a-Tag enthält:Angular - in ngIf aktive Route erkennt

<li> 
    <a routerLink="/abc">Inactive</a> 
</li>  
<li>Active</li> 

Die routerLinkActive Richtlinie hier nicht helfen da es nur eine Klasse für die aktive Route hinzufügen kann, aber kein anderes Markup verwenden soll. Ich verstehe, dass ich Router meiner Komponente injizieren kann und so etwas wie dieses

<li> 
    <ng-container *ngIf="router.isActive('/abc')">Active</ng-container> 
    <a *ngIf="!router.isActive('/abc')" routerLink="/abc">Inactive</a> 
</li> 

verwenden, aber ist es eine bessere integrierte Lösung für diesen Fall?

Antwort

0

Die Anweisung routerLinkActive hilft hier nicht, da sie nur eine Klasse für die aktive Route hinzufügen kann, aber kein anderes Markup verwenden kann.

Naja, eigentlich ...

<input type="hidden" [routerLink]="'home'" routerLinkActive #home="routerLinkActive" /> 
<section *ngIf="home.isActive"></section> 

Das routerLinkActive Variable ist mit einem Template-Variable gebunden und dann wiederverwendet, wie erforderlich. Leider ist die einzige Einschränkung, dass Sie dies nicht alle auf dem <section> Element haben können, da #home vor dem Parser, der <section> schlägt, aufgelöst werden muss.

Verwandte Themen