我暂时没有使用Angular,但我记得我曾经使用* ngIf来触发元素。现在,我不确定是什么问题。
当我直接触发函数<button (click)="play()">...</button>
时,它可以工作,但是我没有看到为什么它不能使用对象的属性。当使用object的属性时,该方法被触发,但值永远不会被更改(它是不是同一个实例或其他东西?)。
组件:
public showPlay: boolean = false;
public arr: Array<Object> = [
{clickHandler: this.play}
];
play(): void {
this.showPlay = !this.showPlay;
}
模板:
<button *ngFor="let button of arr" (click)="button.clickHandler()">Click</button>
<play-interface *ngIf="showPlay"></play-interface>
答案 0 :(得分:0)
你可以这样做,
<button *ngFor="let button of arr" (click)="self[button.clickHandler]()">Click</button>
<div *ngIf="showPlay">hi</div>
并在模板中
export class AppComponent {
public showPlay: boolean = false;
public arr: Array<Object> = [
{clickHandler: 'play'}
];
get self() { return this; }
play(): void {
this.showPlay = !this.showPlay;
}
<强> DEMO 强>