在角度6中访问* ngFor组件的最后一个

时间:2018-10-09 08:31:11

标签: javascript angular

在角度6中,我要访问* ngFor最后一个值,因为如果要设置最后一个值,我要进行操作

例如

Cannot invoke the Invoke-DscResource cmdlet. The Invoke-DscResource cmdlet is in progress and must return before Invoke-DscResource can be invoked. Use -Force option if 
that is available to cancel the current operation.
    + CategoryInfo          : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : MI RESULT 1
    + PSComputerName        : localhost

我想做的是[(myvar)] = last代替let last = last 我想绑定最后一个变量,这样就可以访问是否在其组件中设置了该变量。

3 个答案:

答案 0 :(得分:1)

您可以创建自定义指令

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

@Directive({
  selector: '[onCreate]'
})
export class OnCreate {

  @Output() onCreate: EventEmitter<any> = new EventEmitter<any>();
  constructor() {}
  ngOnInit() {      
     this.onCreate.emit('dummy'); 
  } 

}

,然后可以在*ngFor中使用它来调用组件中的方法:

<li [ngClass]="list.mydata==1?'replies a':'sent a'" *ngFor="let list of chatlist; let last=last;">
    <span (onCreate)="onCreate(last)"></span>
    <img src="{{list.profile_img}}" alt="" />
    <div *ngIf="list.sender_type==0">
        <p>{{list.message}}{{last}}</p>
    </div>
    <div *ngIf="list.sender_type==1">
        <p style="background-color: burlywood;">{{list.message}}</p>
    </div>
</li>

然后在您的组件中

  myvar: boolean = false;

  onCreate(last) {
    this.myvar = last;
  }

签出此DEMO

答案 1 :(得分:0)

在使用*ngFor时,Angular提供了某些局部变量,例如last,它将(不是您当前期望的)是boolean的值,即true如果是最后一项。这是为了将示例的特定样式添加到列表的最后一个元素。

如果您想要该布尔值,则已经正确使用了它,但是显然使用它的元素应该是一个组件。因此,而不是

<span [last]="last"></span>

应该像

<my-component [last]="last"></my-component>

您在my-component中定义的位置

@Input last: boolean;

因此可以访问它。

答案 2 :(得分:0)

例如

<li [ngClass]="list.mydata==1?'replies a':'sent a'" *ngFor="let list of chatlist; let index=i;">

</li>

现在您像

这样的多余元素
<anyTag *ngIf="i === chatlist.length-1"></anyTag>