Angular 7 - сделать последний элемент в массиве ссылкой, используя ngFor - PullRequest
2 голосов
/ 28 октября 2019

У меня есть список пунктов меню, и я хочу сделать последний элемент в массиве ссылкой.

В настоящий момент пункты меню создаются из компонента, но я не уверен, как сделать последний элемент в массиве ссылкой.

ActionMenuItem.component.html

  <div *ngIf="expanded">
  <actionmenuitem *ngFor="let child of line.children" [line]="child" (inWorkspace)="toWorkspace($event)"></actionmenuitem>

ActionMenuItem.Component.ts

  onSelect(){
// If it has children, expand them && flip carat.
if(this.line.children.length > 0){

  this.expanded = !this.expanded;

  if(this.iconName == "expand_more"){
    this.iconName = "expand_less"
  } else {
    this.iconName = "expand_more"
  }

} else {
  this.inWorkspace.emit(this.line);
}

Ответы [ 3 ]

3 голосов
/ 28 октября 2019

Angular предоставляет следующие переменные, которые вы можете использовать:

  • first
  • last
  • даже
  • index
  • odd

Таким образом, чтобы сделать последний элемент ссылкой, вы можете сделать это

<div *ngFor="let child of line.children; let last = islast">
   <actionmenuitem *ngIf="islast" [line]="child" 
(inWorkspace)="toWorkspace($event)">
    </actionmenuitem>
</div>
2 голосов
/ 28 октября 2019

Попробуйте так:

Рабочая демоверсия

<ng-container *ngFor="let child of line.children;let i=index">

    <actionmenuitem *ngIf="i != (line.children.length-1)" [line]="child" (inWorkspace)="toWorkspace($event)">
    </actionmenuitem>

    <a [routerLink]="[child]" *ngIf="i == (line.children.length-1)">{{child}}</a>
</ng-container>
0 голосов
/ 28 октября 2019

вам просто нужно исправить последнее назначение флага:

  • let isLast = last или
  • last as isLast
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...