【发布时间】:2017-08-12 09:33:16
【问题描述】:
假设我有以下 getter/setter 方法
get next() {
console.log(this.people[this._index], this._index);
return this.people[this._index];
}
set next(i: any) {
this._index = (+i) + 1;
this._index = (+i) % this.people.length;
}
我想通过以下方式调用它:
<ng-template ngFor let-person="$implicit" [ngForOf]="people" let-i=index let-last=last>
<app-card [cardItem]="people[i]" [nextCard]="next(i)"></app-card>
</ng-template>
PS:把它想象成圆形数组。在哪里我需要上一个、当前和下一个项目。
但是我得到以下错误
Angular:成员“下一个”不可调用
这是为什么呢?解决办法是什么?
谢谢
编辑
感谢大家的帮助和解释。在您的帮助下,我设法使它工作:
<app-card [currentCard]="people[i]" [nextCard]="people[i === people.length - 1 ? 0: i + 1]" [prevCard]="i == 0 ? people[people.length - 1] : people[i - 1]"></app-card>
所以它几乎是圆形数组。 假设我们有以下内容:
people["James Dan", "Aluan Haddad", "Jota Toledo"]
条件很少:
- 如果我站在数组的开头(即
index = 0) - 那么我的prev将是people[people.length - 1],这是数组中的最后一个元素。如果我的当前在索引 1 上,那么我的上一个将是索引 0,下一个将是索引 2。
【问题讨论】:
-
我在回答中又添加了一个示例。这显示了您将如何正确使用属性,并演示如何构建显示结构,同时避免模板的复杂性。
标签: angular typescript getter-setter templatebinding