Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将ngFor刚刚创建的div传递给Angular中的函数_Javascript_Angular - Fatal编程技术网

Javascript 将ngFor刚刚创建的div传递给Angular中的函数

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; }

我正在使用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;
}

其中“存在”是一个类似于:

@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
属性