Javascript 将ngFor刚刚创建的div传递给Angular中的函数
我正在使用ngFor制作一些div:Javascript 将ngFor刚刚创建的div传递给Angular中的函数,javascript,angular,Javascript,Angular,我正在使用ngFor制作一些div: <div *ngFor='let img of images'> 我想把刚刚生成的div传递给一个函数。起初,我尝试只向函数传递一个数字 <div *ngFor='let img of images' (being)="ToRunEachTime(img)"> ToRunEachTime(event: Event){ var currentdiv= <HTMLDivElement>event.target; }
<div *ngFor='let img of images'>
我想把刚刚生成的div传递给一个函数。起初,我尝试只向函数传递一个数字
<div *ngFor='let img of images' (being)="ToRunEachTime(img)">
ToRunEachTime(event: Event){
var currentdiv= <HTMLDivElement>event.target;
}
其中“存在”是一个类似于:
@Directive({
selector: '[being]'
})
export class beingDirective {
@Output() being: EventEmitter<any> = new EventEmitter<any>();
constructor() {}
ngOnInit() {
this.being.emit('anything');
}
}
@指令({
选择器:“[正在]”
})
出口类BEING指令{
@输出()为:EventEmitter=新的EventEmitter();
构造函数(){}
ngOnInit(){
this.being.emit('anythis');
}
}
这段代码运行良好,每次我都能将img(一个数字)传递给函数ToRunEachTime。但是,我希望将刚刚由*ngFor创建的整个div传递给这个函数。我试过:
<div *ngFor='let img of images' (being)="ToRunEachTime($event)">
但是功能
<div *ngFor='let img of images' (being)="ToRunEachTime(img)">
ToRunEachTime(event: Event){
var currentdiv= <HTMLDivElement>event.target;
}
ToRunEachTime(事件:事件){
var currentdiv=event.target;
}
给了我一个不明确的答案。感谢您的帮助 在指令中,您正在发出一个
字符串
,该字符串不包含目标
属性
export class beingDirective {
@Output() being: EventEmitter<any> = new EventEmitter<any>();
constructor(private el:ElementRef,private renderer:Renderer2) {}
ngOnInit() {
this.being.emit(this.el.nativeElement);
}
}
这将为您提供target
元素。更新了演示
在哪个模块中有指令?一个名为beingDirective的模块,我正在使用import{beingDirective}从“./being.directive”将它导入我的主组件。您正在这一行发出一个字符串
this.being.emit('anything')
然后事件
在你的应用程序中。组件.ts
将保存任何东西
值,这只是一个虚拟事件,用于通知元素已创建,因此我可以调用我的实际函数。检查下面的答案,是否有用?当我设置为(being)=“ToRunEachTime($event)”时,我仍然未定义在ToRunEachTime中有一个类似alert(event.target)的警报,在本例中,$event
是您的HTML元素,它没有target
属性,因此您的HTML元素未定义<代码>控制台.log(事件)并查看对象结构它是[object HtmlLevel]。但是为什么使用target会给我带来未定义的结果呢?例如,如何从这个偶数对象获取元素的Id?元素内部没有目标。它不是事件
而是您正在发射的elementRef
。因此它没有target
属性