在视图中,我有这种情况:
<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)
}
希望能有所帮助。