Angular2 viewmodel中的布尔值不会更新* ngIf模板

时间:2016-04-20 04:54:37

标签: typescript angular

我有一个奇怪的行为,我需要一些帮助。这是一个angular2和打字稿应用程序。

我有一个模板,其中包含以下使用 ngIf 的html:

<div *ngIf="loading" class="row">
        <div class="small-3 small-centered columns"  >
            <img src="/Images/loading_spinner.gif" />
        </div>
    </div>

我有一个触发功能的按钮来改变加载值

export class ShiftEditComponent implements OnInit {

    loading: boolean = false;

    setLoading(value: boolean): void {
        if (this.loading !== value) {
            this.loading = !this.loading;
        }
    }
}

这是奇怪的事情。如果我从类中的其他位置指定value参数的值,则模板不会更新。 但是如果我删除逻辑并只是将加载分配给它的对面,那么它就可以工作,模板会更新,而ngIf会显示并且不会相应显示。

这项工作:

    setLoading(): void {
            this.loading = !this.loading;
    }

问题: 当我只是分配相反的值时,为什么这会工作和ngIf更新,但如果我尝试通过参数指定值,则ngIf模板不会更新(显示或隐藏)

1 个答案:

答案 0 :(得分:6)

  

如果我从类中的其他位置指定value参数的值,则模板不会更新

您在该处理程序中有错误{{1}}的常见症状

修复

使用箭头功能https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html