【问题标题】:boolean value in Angular2 viewmodel does not update *ngIf templateAngular2 视图模型中的布尔值不更新 *ngIf 模板
【发布时间】:2016-08-12 13:28:42
【问题描述】:

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

我有一个包含以下使用 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 模板不会更新(显示或隐藏)

【问题讨论】:

  • 它确实更新相同。问题出在其他地方。

标签: typescript angular


【解决方案1】:

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

您在该处理程序中使用错误的this 的常见症状

修复

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

【讨论】:

    猜你喜欢
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多