我想在数组中找到一件事,然后以某种方式用变量访问它。不是在寻找方法,而是如何为此编写模板。
我怎样才能达到这样的目标?
<div *ngGet="let thisOneThing of findInThings(thingId)">
<awesome-component [thisOneThing]="thisOneThing"></awesome-component>
</div>
令人敬畏的组件模板是:
<div>{{ thisOneThing.someProperty }}</div>
所以基本上:查看一个数组并找到一些东西,把它放在一个新变量中并将它传递给组件。
我知道这看起来类似于* ngFor但是我不希望在没有这样的东西时在awesome-component上调用构造函数。
以下不起作用,因为ng2不允许2个结构指令:
<div *ngFor="let thisOneThing of findInThings(thingId)" *ngIf="thisOneThing">
....
</div>
当我使用或在* ngFor中时,没有任何内容出现。
替代:
<div *ngFor="let thisOneThing of findInThings(thingId)">
<div *ngIf="thisOneThing">
....
</div>
</div>
但是* ngFor并不是我想要的,我不想实际循环。 (整个部分实际上已经存在于另外两个循环中,并且取决于数组的大小,这会导致性能问题)
有管道的概念,如果可能的话我想避免使用其他文件(我只有一个小应用程序并且已经接近100个文件)但是如果可以的话,非常欢迎您提出解决方案这里。
期待您的想法。谢谢。
更新
存储内容并在控制器中使用它不是一个选项。
<div *ngFor="let day of allDaysInAYear">
<div *ngFor="let hour of allHoursInOneDay">
<div *ngGetMeAVariable="let thisOneInterview of findInInterviews(day, hour)">
<!-- here I have a separate componenent, to make it easy it's inline here. I want access thisOneInterview , something like -->
<div>{{ thisOneInterview.nameOfApplicant }}</div>
</div>
</div>
</div>
我想我可以在ngIf周围使用ngFor(但是我需要使用一个可迭代的并且用.length&gt; 0来写丑陋的ngIf并传递thisOneThing [0] ..)
同样@ jb-nizet建议调用该方法两次。但是,如果有更少的开销,是否有更美观的解决方案?