在视图中,我有这种情况:

    <h3 *ngIf="show">{{users.result}}</h3>


在TypeScript逻辑中,我有:

show=false; <----as a property


和以下功能:

timeOut(seconds: number, value:boolean) {
   value = true;
    setTimeout(
      function() {
        value = false;
      }.bind(this),
      seconds
    );
  }


但是当我这样称呼它时:

console.log(this.timeOut(3000, this.show));


属性“ this.show”未定义,但秒作为参数起作用了。我丢失了一些东西,我不知道该怎么办...有人可以帮忙吗?

最佳答案

如我所见:


首先,您要控制台控制台记录功能调用而没有结果。
当您将布尔值传递到函数参数中时,它将被复制,因此,当您在函数内部更改值时,它不会影响外部变量/字段。
这是非常专业的用例,因此您无需将其提取到其他功能。


我的建议-只需将带有箭头功能的setTimeout调用放入某些组件的方法(例如ngAfterViewInit)中或事件处理程序方法中:

ngAfterViewInit() {
   setTimeout(() => this.show = true, 3000)
}


希望能有所帮助。

10-07 14:15
查看更多