Вчера я пытался играть с одним из вопросов SO и столкнулся с проблемой в своем решении.ручка настраиваемая директива с ngFor - Angular2
в шаблоне компонента, я использую ngFor директива, в рамках которой я использую свою собственную директиву popover
. Только с помощью директивы, я хочу показать содержимое скрыть для каждого ngFor объект.
Как только вы проверите http://plnkr.co/edit/X4U8ofJ5rgmE1YQ7fTAG?p=preview, вы поймете мою проблему.
on mouseenter
мероприятие, используемое в рамках директивы Я хочу показать содержание соответствующего ngFor
объекта.
directive.ts
import {Input,Component,Output,EventEmitter,Input,Directive,Hostbinding} from 'angular2/core';
import {Component, Input, OnInit, OnChanges, ChangeDetectionStrategy, ElementRef} from 'angular2/core';
@Directive({
selector: '.tower-details',
host:{
'(mouseenter)':'show($event)',
'(mouseout)':'hide()'
}
})
export class popover{
@Input() value: string;
@Output() valueChange=new EventEmitter();
ngOnChanges(...args:any[]){
//console.log(args[0].value);
}
show(val)
{
console.log(val.target);
this.valueChange.emit(true);
}
hide()
{
console.log('hide');
this.valueChange.emit(false);
}
}
app.ts
template: `
<div *ngFor="#p of popovers;#index=index">
<div class="tower-details" [(value)]="show" style="display: block;border:1px solid green;background-color:orange" >
Hover Me ! {{index}}
<div *ngIf="show">
<div class="popover top" style="display: block;border:1px solid green">
<h3 class="popover-title">{{p.title}}</h3>
<div class="popover-content">pop up content</div>
</div>
</div>
</div>
<br>
<br>
</div>
`
Gunter what Если у вас нет такого логического свойства, и вы все же хотите обрабатывать его только с помощью директивы. – micronyks
здесь вы знаете, что у вас есть три объекта, поэтому вы придумали три объекта. Но на самом деле, что, если в массиве тысячи объектов. Вы просто не можете идти этим путем. правильно? Мне нужен динамический путь. например. используйте 'index', и если мы сможем с ним что-то сделать с помощью директивы. – micronyks
Я обновил свой ответ. –