2017-12-03 16 views
1

Udemyコースを受講した後、Angular 4を使用してアプリケーションを作成しています。私はいくつかのイベントで遊んで始めています。これまでのところapp.component.tsというコンポーネントは1つしかありません。私のHTMLでは、私はクリックイベントを添付しているために、このヘッダ要素があります。HTML要素のクリック情報の角を抽出する

<h2 class="url-link" (click)="viewTopics()" #headerLink>View archived topics</h2> 

を私が試してみて、他のHTML要素でのクリックイベントに耳を傾けるH2要素にローカル参照#headerLinkを追加しました。しかし、私はそうすることはできません。

export class AppComponent { 
    @ViewChild('headerLink') headerLink: ElementRef; 

    viewTopics() { 
    console.log(this.headerLink); 
    } 
} 

コンソールログは、のonclickプロパティを持つプロパティnativeElementを持つH2要素を示していますが、このonclickのプロパティは常にnullである:私は、イベント関数の要素のはconsole.logをしました。このようにしてh2要素のclickイベントにアクセスすることは可能ですか、h2要素に対してのみ(クリック)イベントを使用する必要がありますか? headerIsClickedは、例えばpublicboolean小道具である

+0

あなたはあなたが書いた任意の関数に「headerLink」を渡すことができますイベントに渡すことで、クリックイベントの詳細情報を取得することができますHTML上で(click)= "viewTopics(headerLink)" - 別の要素でさえ - –

+0

私の質問は、このローカル参照headerLinkからクリック情報を取得する方法です。私が見つけることができる唯一のプロパティは常にnullであるonclickプロパティです。間違った物件を見ていますか? –

答えて

0
<h2 (click)="viewTopics()"></h2> 
<p *ngIf='headerIsClicked === true'>Toggle me</p> 
<h3 *ngIf='headerIsClicked === true'>and me</h3> 

viewTopics(): void { 
    this.headerIsClicked = !this.headerIsClicked; 
    } 

public headerIsClicked: boolean = false;

+0

私の質問は、別のHTML要素のh2上のこのクリックイベントを聞きたい場合です。

またはどうすればいいですか?したがって、これらの他の要素は、たとえばh2がクリックされた場合にのみ表示されます。また、上の例のconsole.log(this.headerLink)は、まだnullのonclickプロパティを持っていないようです。 –

+0

上記のようにクリックをバインドしてから、たとえばviewTopics関数で状態(ブール値)を設定し、他の要素に* ngIfを使用して非表示にするか、または表示させます – DrNio

+0

別の変数を使用してステータスを設定しますh2がクリックされると私はそれを行うことができましたが、別の変数なしでそれを行うことは可能かもしれないと思っていましたが、h2のHTMLプロパティをチェックして他のHTML要素のクリックを聞くだけでした。 –

1

あなたは

<h2 class="url-link" (click)="viewTopics($event)" #headerLink>View archived topics</h2> 

viewTopics(event){ 
    console.log('evt', event); 
} 
関連する問題