在角度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 我想绑定最后一个变量,这样就可以访问是否在其组件中设置了该变量。
答案 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>