我是Angular2的新手,所以有很多事情我不会'知道了。我创建了以下组件:
@Component({
selector: 'game-card',
templateUrl: 'assets/js/app/play/game-card.html',
directives: [NgIf, ReferencesModalComponent]
})
export class GameCardComponent
{
public showUserReferences: boolean = false;
public showUserReferencesModal()
{
this.showUserReferences = true;
}
}
要使用该组件,我有以下模板:
<div>
<references-modal *ngIf="showUserReferences == true"></references-modal>
<button class="basic-link" (click)="showUserReferencesModal()">
<small>Références</small>
</button>
</div>
问题是该方法被正确调用,但this.showUserReferences
的值永远不会改变...说实话,如果我们在改变其值后立即打印该属性,那就很好了。但是,如果我们再次调用该方法,则值不会改变......
修改
感谢大家的回答。我终于发现了什么问题。我在NgFor循环中调用我的组件。
<div *ngFor="#results of getResults()"></div>
问题是循环一个方法。我用一个简单的数组替换了getResults(),现在一切正常。
答案 0 :(得分:1)
但是,如果我们再次调用 方法,则值不会更改
public showUserReferencesModal()
{
this.showUserReferences = !this.showUserReferences;
}
或者只是(如果你不想调用showUserReferencesModal
方法),
(click)="showUserReferences = !showUserReferences"
答案 1 :(得分:0)
您可以不使用方法来执行此操作:
<div>
<references-modal *ngIf="showUserReferences"></references-modal>
<button class="basic-link" (click)="showUserReferences = !showUserReferences">
<small>Références</small>
</button>
</div>
答案 2 :(得分:0)
这里需要注意几点: -
无需向指令添加NgIf
。它是CORE_DIRECTIVES
的一部分,默认情况下全局可用,如@gunter所述
无需在* ngIf中查看true
,因为这已经接受true
/ false
。当showUserReferences
为true
时,此代码应该有效:
*ngIf="showUserReferences"
(click)="showUserReferences = !showUserReferences"