Angular5 *ngIf=“afunctioncall(); let L”导致函数被调用 4 次

Angular5 *ngIf=“afunctioncall(); let L” results in the function being called 4 times

我正在使用 Angular 5,我希望在根据函数调用的结果从数组中找到一个元素后 return 一个对象,然后我将 let L 用作一个可变对象来保存它。

当我这样做时,我注意到该函数被调用了多次。

我创建了一个 stack-blitz 来显示这种情况。此处该函数被调用了 4 次,但在我的本地应用程序中,它被调用了 6 次以上。

https://stackblitz.com/edit/angular-ypwswn

我知道这是因为更改检测周期。但我想不出如何从逻辑上解决这种情况。

我看过以下 post 但是它与 Angular 2 相关。我不确定它是否相关

'console.log输出4次

任何人都可以指出我或者我遗漏了什么吗?

有什么办法可以避免吗?

任何帮助将不胜感激。

我需要将数组传递给该方法并从该数组中获取选定的腿。

在您的模板上调用 ngOnInit 中的函数

export class AppComponent implements OnInit {

finaldata : any;


ngOnInit() {

     this.finaldata = this.getSelectedLeg(this.data);

  }


}

在html

<div *ngIf="finaldata; let L">

</div>