我想在一段时间后更新属性。但是查看为什么不是reflecting
?
这是我的代码:
https://stackblitz.com/edit/angular-grjd1u?file=src%2Fapp%2Fhello.component.ts
ngOnInit(){
this.ls = "dddd"
setTimeout(function(){
this.name ="helllllll"
}, 3000);
}
我想在name
秒之后更新我的3
媒体资源。但它没有更新。
为什么更改检测不起作用?
答案 0 :(得分:1)
因为在setTimeout
的回调中,this
是Window
对象,而不是您的组件实例。您可以使用箭头函数来解决此问题,该函数将this
绑定到声明函数的上下文:
ngOnInit(){
this.ls = "dddd"
setTimeout(() => {
this.name = "helllllll"
}, 3000);
}
答案 1 :(得分:0)
您需要实现接口OnChanges
以获取名称引用,并在var name
此函数中执行更改,此函数在ngInit
和ngOnChanges
触发后执行您正在使用@Input()
装饰器demo
ngOnChanges(changes: any): void {
this.ls = "dddd"
setTimeout(() => {
this.name = "helllllll"
}, 3000);
}
答案 2 :(得分:0)
使用Observable:
// Create observable
const myObservable = new Observable((observer) => {
setInterval(() => observer.next({ name: 'John Doe', time: new Date().toString() }), 3000);
})
// Subscribe to the observable
myObservable.subscribe((x: any) => {
this.name = `${x.name}, Time: ${x.time}`;
});