Angular 2和类似* ngGet或* ngFind的东西

时间:2017-05-27 19:25:28

标签: angular ngfor ngif

我想在数组中找到一件事,然后以某种方式用变量访问它。不是在寻找方法,而是如何为此编写模板。

我怎样才能达到这样的目标?

<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建议调用该方法两次。但是,如果有更少的开销,是否有更美观的解决方案?

0 个答案:

没有答案