現在、Angular 2 Webアプリケーションで作業中です。ビューでは、アクティブな要素は、クリックすると追加のCSSクラスを取得する必要があります。クリックされた要素は追加のCSSクラスを取得する必要があります。ユーザがマウスボタンから指を離したときにクラスが削除されるため、独自のCSSクラスを含むCSS属性 ":active"を追加する必要はありません。 CSSプロパティ ":focus"はまったく動作しません。 Angular2ディレクティブのNg-click、ng-switch、ng-if、ng-classを試しました。これまで コード -Angular2:要素をクリックしたときのCSSクラスの設定とメンテナンス
テンプレート:
<footer>
<div class="thumbnail-slider">
<div class="thumbnail-img-container">
<img class="thumbnail-slider-img" (click)="getActualImage(url)"
*ngFor="let url of urls" [src]="url"/>
</div>
</div>
</footer>
コンポーネント:
import { Component, NgModule, Input, Output, ViewChild, EventEmitter, ElementRef, OnInit, AfterViewInit, OnDestroy } from '@angular/core';
import { BrowserModule, DomSanitizer, SafeUrl } from '@angular/platform-browser';
import { Http, Response, ResponseContentType } from '@angular/http';
ReqConstImages } from '../../services';
import { Subscription } from 'rxjs/Subscription';
import { Subject } from 'rxjs/Subject';
import { ObservableUtility } from '../../helper/index';
import { trigger, state, style, transition, animate } from '@angular/animations';
let css: any = require('!raw-loader!less-loader!./thumbnail-slider.less');
@Component({
selector: 'thumbnail-slider',
templateUrl: 'thumbnail-slider.html',
styleUrls: [css],
animations: [
trigger('click', [
state('inactive', style({
border: '5px yellow solid'
})),
state('active', style({
border: '6px green solid'
}))
])
]
})
export class ThumbnailSliderComponent implements OnInit, AfterViewInit, OnDestroy {
constructor(private http: Http, private sanitizer: DomSanitizer, private observableUtility: ObservableUtility) { };
}
このdoesn'tは大したように見えます。しかし、私はまだ適切な解決策を見つけられませんでした。クリックされる要素には、追加のCSSクラスが必要です。私がAngular2を初めて習得したときには、ヒントや助けをいただければ幸いです。
あなたは '[class.active] =" isActive "[class.inactive] ="!isActive "'を試して、関数内のisActiveを切り替えることができます。また、CSSクラスをコンポーネントのスタイルに移動します。デフォルトのCSSを与えて、アクティブまたは非アクティブをオーバーライドとして使用します。 –
また、質問はあまり明確ではありません。新しいクラスをいくつ適用したいのですか? ?それは一度です、一度要素をクリックすると、クラスが適用され、それはすべてのために適用され続ける必要があります。 ?あなたが提供したHTMLの正確な要素があなたをターゲットにしていますか? –
@ redflar3:サムネイルスライダの別の画像をクリックするまで、CSSクラスは適用されたままになります。基本的には、アクティブな画像が選択されるサムネイルスライダです。それは適用され続ける必要があります。それはあなたの質問に答えますか? –