2017-02-13 2 views
1

예를 들어, 나는 itemDragged() 함수를 가지고 있습니다. 그 함수 내부에서 현재 클래스 속성을 얻기 위해 ion-item-sliding이라는 참조를 얻으려면 어떻게해야할까요?각도 2의 현재 요소에 대한 참조를 얻는 방법은 무엇입니까?

<ion-item-sliding *ngFor="let activity of activities" (click)="showModalInfo(activity)" (ionDrag)="itemDragged($event)"> 
+0

'$ event.target'을 확인 했습니까? – Satpal

+0

@Satpal'undefined' – Kin

+0

도움이 될 것 같아요 : http://stackoverflow.com/questions/32693061/angular-2-typescript-get-hold-of-an-element-in-the-template –

답변

3

당신은 템플릿

<ion-item-sliding #iis *ngFor="let activity of activities" (click)="showModalInfo(activity)" (ionDrag)="itemDragged(iis)"> 
<p>{{iis.class}}</p> 
+0

그것은'$ event'와 동일하게 반환됩니다. – Kin

0

에 참조 변수를 사용하지만 이벤트 클래스에 파고 당신이 ViewChild을 사용이

itemDragged(event){ 
    console.log(event._elementRef.nativeElement.className); 
    } 
+0

참조가'_' (_elementRef)로 시작하면, 일반적으로 내부적으로 사용되고 직접적으로 사용되는 것이 아닙니다. 이 구조가 유지 될 것이라는 보장은 없습니다 – Greg

0

같은 클래스를 얻을 수 있고, 얻을 수있는 nativeElement?

구성 요소 API에서 키는 코드에서 액세스하는 방법이며 ViewChild에 전달되는 값은 구성 요소에 부여한 ID ("ES6"입니다. ViewChild 주석) : 마크 업에서

... 
queries { 'myElement' : new ViewChild ('myelement') } 
... 

: 구성 요소 기능에

<div #myelement></div> 

은 (핸들러, 당신이 필요로하는 곳을 잡아)는 nativeElement 속성은 당신에게 HTML 요소에 대한 참조를 제공합니다 그래서 innerHTML을 설정하거나, 핸들러를 추가하거나, 다른 작업을 수행 할 수 있습니다. 이 작업을 수행하는 다른 방법 (예를 들어, 당신은 [innerHTML을] 결합 (클릭) 또는 수) 속성을 결합함으로써 물론있다 :

또는
... 
this.myElement.nativeElement... // etc. 
... 

, 당신은 말 (여러 요소에 대해 하나의 핸들러를 사용하기를 원한다면, 다른 clickable divs의 무리) 같은 일을하기 위해 event.target을 사용할 수 있습니다. 그 문제는 ID를주는 것이 최근에 "나쁜"것으로 간주되기 때문에 어떤 DIV를 클릭했는지 식별 할 수있는 대체 방법이 있어야합니다. 라벨 (innerHTML)을 확인하고 더미 스타일을 지정하고 체크 할 수 있습니다.

관련 문제