Angular SetTimeout不更新视图

Angular SetTimeout不更新视图,angular,Angular,我的组件有一段代码,例如: this.test= false; setTimeout(() => { this.test= true; }, 1000); 我的视图有{test}问题是视图永远不会变为true,而是保持为false。我读到这可能是一个与polyfills有关的问题?但它是为另一个项目工作的,我没有为此添加多边形填充 更新 已修复,这是因为即使值为,也没有更新视图。我相信changedetectref也有类似的功能,但我决定将布尔值转换为可观察值,它成功了。您的代码

我的组件有一段代码,例如:

this.test= false;
setTimeout(() => {
    this.test= true;
}, 1000);
我的视图有{test}问题是视图永远不会变为true,而是保持为false。我读到这可能是一个与polyfills有关的问题?但它是为另一个项目工作的,我没有为此添加多边形填充

更新
已修复,这是因为即使值为,也没有更新视图。我相信changedetectref也有类似的功能,但我决定将布尔值转换为可观察值,它成功了。

您的代码看起来不错,但不确定您的浏览器是否支持箭头功能,请尝试以下操作:

setTimeout(function (){
   this.test= true;
}, 1000);
试着这样做:

组件。ts

import { Observable } from 'rxjs/Rx';

export class sampleComponent {
    private test: boolean = false;

    constructor() {
        Observable.interval(1000).subscribe((x) => {
            this.test = true;
        });
    }    
}
component.html

<div>{{test}}</div>
{{test}

您的问题很可能出现在代码的其他地方。如果封闭函数是function()而不是arrow函数,则示例代码有效。否则,您将更新不同的
。关于何时可以访问此
,存在一个混淆,我希望blow示例可以清楚地说明这一点。箭头函数没有
,但是,箭头函数可以从附带的函数访问

“严格使用”;
设o=function(){};
o、 方法=函数(){
让updateView=\=>{
document.getElementById('app').append(this.test+'\n');
this.test=“测试不起作用。(很可能是无限的)”;
} 
this.test='初始值';
updateView();
设i=0;
设置超时(()=>{
this.test='函数()中的箭头函数有效';
updateView()
},++i*1000);
setTimeout(函数(){
this.test='function()中的unbuned function()不起作用';
updateView();
},++i*1000);
setTimeout(函数(){
this.test='Bouned function()inside function()works';
updateView()
}.bind(这个),+i*1000);
}
o、 方法()

你能发布示例代码吗?这就是我组件中的全部内容。。。我的观点{{test}}您能提供更多关于示例代码的上下文吗?此代码位于哪个外部函数或事件处理程序中?如果问题与多边形填充有关,我假设它在某些浏览器中可以正常工作。您还可以在
setTimeout
事件处理程序中添加
console.log('setTimeout ticked')
,以查看它是否被触发。您的封闭函数是箭头函数(=>)还是函数()?我尝试了您需要的两种方法。绑定(此)函数。