Angular的* ngIf不显示组件的模板

时间:2017-07-29 14:20:30

标签: angular angular-ng-if

我暂时没有使用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>

1 个答案:

答案 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