2017-04-11 8 views
1

現在、angular2とmaterial2を使用しています。私の目標は、routerLinkActiveがアクティブなときにmd-buttonをmd-raised-buttonに変更することです。たとえば、私が "/ todos"を使用している場合、 "md-button"ディレクティブを "md-raised-button"に置き換えます。routerLinkがangular2でアクティブになっているときにUI要素にディレクティブを追加します。

私はインターネット上で解決策を見つけることができません、私は誰かが私を導くことを願っています。私はCSSクラスの使用を避けたいです。

<a md-button routerLink="/" routerLinkActive="toolbar-active" [routerLinkActiveOptions]="{exact: true}"> 
    Home 
</a> 
<a md-button routerLink="/todos" routerLinkActive="toolbar-active" [routerLinkActiveOptions]="{exact: true}"> 
    Todos 
</a> 

ありがとうございました!

マチューズ

答えて

1

私はより簡単な方法はないと思います。

<a md-button #rlActive="routerLinkActive" [hidden]="!rlActive.active" routerLink="/" routerLinkActive="toolbar-active" [routerLinkActiveOptions]="{exact: true}"> 
    Home 
</a> 
<a md-button-raised #rlActive="routerLinkActive" [hidden]="rlActive.active" routerLink="/" routerLinkActive="toolbar-active" [routerLinkActiveOptions]="{exact: true}"> 
    Home 
</a> 

<a md-button #rlActive="routerLinkActive" [hidden]="!rlActive.active" routerLink="/todos" routerLinkActive="toolbar-active" [routerLinkActiveOptions]="{exact: true}"> 
    Todos 
</a> 
<a md-button-raised #rlActive="routerLinkActive" [hidden]="rlActive.active" routerLink="/todos" routerLinkActive="toolbar-active" [routerLinkActiveOptions]="{exact: true}"> 
    Todos 
</a> 

これが頻繁に必要な場合は、ボタンをカスタムコンポーネントにラップして、このパターンを簡単に再利用できるようにします。

+0

ありがとうございました。それはコードの行数を倍増させますが、少なくとも単純な解決策です!驚くばかり ;) –

関連する問題