我想在加载元素时调用带参数的函数。
就像安格尔的恩吉尼特一样。我们能在角4处做吗?

<div *ngFor="let item of questionnairelist"  (onload)="doSomething(item.id)" ></div>

我的typescript函数:
doSomething(id) {
    console.log(id);
}

最佳答案

你需要写一个指令

import {Directive, Input, Output, EventEmitter} from '@angular/core';

@Directive({
  selector: '[ngInit]'
})
export class NgInitDirective {

  @Input() isLast: boolean;

  @Output('ngInit') initEvent: EventEmitter<any> = new EventEmitter();

  ngOnInit() {
    if (this.isLast) {
      setTimeout(() => this.initEvent.emit(), 10);
    }
  }
}

在HTML中使用
<div *ngFor="let quetionnaireData of questionnairelist ; let $last = last" [isLast]='$last'
   (ngInit)="doSomething('Hello')"></div>

同时在app.module中声明指令
@NgModule({
  declarations: [
    ..
    NgInitDirective
  ],
  ......
})

09-11 17:37