我從 Ts 和 angular 開始,我找不到我做錯了什么。
我的模板中有一個用于啟動和結束計數器的按鈕,它記錄了數字,并且由于某種原因,計數器保持在 0。
<body>
<button (click)="onStart()">Start Game</button>
<button (click)="onEnd()">End Game</button>
</body>
number:number = 0;
interval:any;
onStart(){
this.interval = setInterval(
function() {this.number =1;}
,1000);
console.log(this.number);
}
onEnd(){
console.log(this.number);
clearInterval(this.interval);
}
uj5u.com熱心網友回復:
這是因為范圍,當您使??用function關鍵字創建匿名函式時,會創建一個新范圍,這將覆寫 parent parent class this。所以number不能用關鍵字訪問,this因為它沒有在函式中定義。為了克服這個問題,您可以使用arrow function:
onStart() {
this.interval = setInterval(() => {
this.number = 1;
}, 1000);
console.log(this.number);
}
或者您可以將父母復制this到另一個變數中并在您的函式中使用它。
onStart() {
const scope = this;
this.interval = setInterval(function () {
scope.number = 1;
}, 1000);
console.log(this.number);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/416720.html
標籤:
下一篇:角路由加載沒有子組件的孫組件
