2017-06-08 6 views
1

角度成分に[routerLink]属性を持つスタイルを適用しようとしています。angular2:ホストattrセレクタは[routerLink]を選択しません

<component [routerLink]="'...'"> 

しかし、いくつかの理由で、:host(selector) CSSセレクタはrouterLinkに自分自身を添付することができていないようです。 html要素の検査で

:host([routerLink]):hover{ 
    background-color: rgba(125, 91, 190, 1); 
} 

私は[routerLink][router-link]に核変換されることを見る - これはそれとは何かを持っているのでしょうか? (私は[router-link]をセレクタとして無駄にしました)。

私は

<component [routerLink]="'...'" this-has-a-route> 
// works 
:host([this-has-a-route]):hover{ 
    background-color: rgba(125, 91, 190, 1); 
} 

なぜこれが事実であるとしてrouterLinkを使用することが可能です...私は、カスタム属性にセレクターを変更した場合、それが正常に動作しますので、セレクタの構文が正しいことを知っていますセレクタ?

+0

仕事のために、この属性にあなたのCSSを適用することができ、ブラウザで次のように<a ng-reflect-router-link="/demo">demo</a>

を変換し、あなたのtemolateで<a [routerLink]="['/demo']">demo</a>終了。これは既知の問題であり、対処が求められています。 –

+0

@NeilLunn ohhhhhhhhhhh ...はいはい!それは当然です!そして、これを実現するために人々が取り組んでいる現状の取り組みはありますか?あるいは、私はちょうど '[this-has-a-route]'と一緒に行くべきですか? – Zze

+0

属性はhtmlに角括弧を含まないので、 'Core->Item'のように使用することです。欠点は、 'routerLink'の中のすべてが式ではなく文字列として評価されることです。 –

答えて

1

はいこれのための回避策があります。これまで[routerLink]ディレクティブを使用している場合は、ブラウザでng-reflect-router-linkに変換され、コードを調べることができます。例については

:それはあなたがそれを指示していない属性だ周り

 :host [ng-reflect-router-link]:hover { 
     color: red !important; 
     } 

     :host [ng-reflect-router-link] { 
     color: yellow !important; 
     } 
関連する問題