gpt4 book ai didi

javascript - 为什么更新后不触发onChanges

转载 作者:行者123 更新时间:2023-12-03 05:15:11 24 4
gpt4 key购买 nike

我有以下父组件:

@Component({
selector: 'hello-world',
template: `
<div>
<private [text]="value"></private>
</div>`
})

export class HelloWorldComponent {
public value: number = 3;

constructor() {
setTimeout(function () {
this.value = 5;
}, 3000);
}
}

和子组件:

@Component({
selector: 'private',
template: `<span>{{text}}</span>`
})

export class PrivateComponent implements OnChanges {
@Input() public text: string;

ngOnChanges(changes: SimpleChanges): void {
console.log(changes.text.currentValue);
}
}

ngOnChanges 仅在预期值为 3 时触发一次,但在值为 5 时不会第二次触发。为什么?

最佳答案

当您将值更改为 5 时,this 指的是您传递给 setTimeout 的匿名函数,而不是您的 HelloWorldComponent 实例,您可以将构造函数更改为如下所示:

constructor() {
var _self = this;
setTimeout(function () {
_self.value = 5;
}, 3000);
}

关于javascript - 为什么更新后不触发onChanges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41637284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com