【发布时间】:2018-06-11 10:00:59
【问题描述】:
希望你能正确理解这一点。
我创建了一个自定义 ngForIn 指令来获取对象的键。这适用于以下代码:
import {Directive, Input, OnChanges, SimpleChange, SimpleChanges} from "@angular/core";
import {NgForOf} from "@angular/common";
@Directive({
selector: "[ngFor][ngForIn]"
})
export class NgforinDirective<T> extends NgForOf<T> implements OnChanges {
@Input() public ngForIn: any;
public ngOnChanges(changes: SimpleChanges): void {
if (changes.ngForIn) {
if (this.ngForIn) {
this.ngForOf = Object.keys(this.ngForIn) as Array<any>;
const change = changes.ngForIn;
const currentValue = Object.keys(change.currentValue);
const previousValue = change.previousValue ? Object.keys(change.previousValue) : undefined;
changes.ngForOf = new SimpleChange(previousValue, currentValue, change.firstChange);
}
super.ngOnChanges(changes);
}
}
}
我现在面临的问题是我需要在模板中多次访问 object[key] 的值。到目前为止,我正在像这样(肮脏)使用它:
<div *ngFor="let key in object">
{{object[key]}}
但是,我希望能够做这样的事情:
<div *ngFor="let key in object; let value = object[key]">
{{value}}
我正在阅读 ngForOf 的源代码,因为它包含一些局部变量,例如“index”或“odd”。
我认为解决方案是在自定义指令中创建一个局部变量,该变量将返回当时正在迭代的 object[key] 的值,但我真的不明白我应该怎么做;或者也许有一个我不知道的更简单的解决方案。
有没有人遇到过这样的问题并找到了解决方案?
谢谢!
【问题讨论】:
-
你可以使用指令中的@Output 发出
标签: javascript angular typescript angular-directive