में एक ngForTemplate का उपयोग कर मान लीजिए कि मैं इस सरल सूची प्रतिपादन घटक मिल गया है दो:बाध्यकारी घटनाओं जब कोणीय 2
import {Input, Component } from 'angular2/core'
@Component({
selector: 'my-list',
template: `
<div *ngFor='#item of items' (click)='onItemClicked(item)'>
{{item}}
</div>
`
})
class MyList {
@Input() items: string[];
onItemClicked(item) { console.log('Item clicked:', item); }
}
मैं इस तरह इसका इस्तेमाल:
<my-list [items]='myAppsItems'></my-list>
अब तक तो अच्छा।
अगला मैं तय मैं उपयोगकर्ता प्रदान की गई मदों के लिए अपने ही टेम्पलेट आपूर्ति करने में सक्षम होना चाहता हूँ, इसलिए मैं घटक
@Component({
selector: 'my-list',
template: `
<template ngFor [ngForOf]="items" [ngForTemplate]="userItemTemplate" (click)='onItemClicked(item)'>
</template>
`
})
class MyList {
@Input() items: string[];
@ContentChild(TemplateRef) userItemTemplate: TemplateRef;
onItemClicked(item) { console.log('Item clicked:', item); }
}
बदल सकते हैं और इस तरह से इसका इस्तेमाल करते हैं:
<my-list [items]='items'>
<template #item>
<h1>item: {{item}}</h1>
</template>
</my-list>
यह केवल काम करता है मैं किसी भी ईवेंट हैंडलर को सूची आइटम (plunker) पर बाध्य नहीं करता हूं। अगर मैं, क्लिक करें घटना के लिए बाध्य करने के लिए के रूप में मैं घटक के पहले संस्करण में किया था की कोशिश, कोणीय फेंकता निम्न अपवाद:
"Event binding click not emitted by any directive on an embedded template"
यहाँ एक plunker showing that है। आप क्लिक बाध्यकारी को हटा सकते हैं और यह काम करेगा।
मैं इसे कैसे ठीक करूं? मैं बस उपयोगकर्ता को एक अधीनस्थ आइटम के लिए एक टेम्पलेट निर्दिष्ट करने में सक्षम होना चाहता हूं जिसे मैं ngFor के माध्यम से पुनरावृत्त करने जा रहा हूं, लेकिन मुझे उन वस्तुओं को हैंडलर बांधने में सक्षम होना चाहिए।
हम्म, यह एक अच्छा है ... ध्यान देने योग्य एक बात - आपके प्लैंक बीटा -8 दोनों का उपयोग कर रहे हैं, जो ~ 2 महीने पुराना है। नवीनतम (बीटा -15) को अपडेट करने से बग ठीक नहीं होता है, लेकिन फिर भी मैं इसे – drewmoore