角度4中实现promise的错误

时间:2018-11-15 12:25:13

标签: javascript angular ecmascript-6 promise

我正在尝试学习promise的概念并实现角度。这是我在stackblit中的代码。我想要实现的是,我想在使用angular中的promise分配有任何值的数组时显示该数组。

我的HTML代码是:

<h2>Array values</h2>
<p *ngIf="show">
  <span *ngFor="let values of filter">
    {{values}}
  </span>
</p>  

我的TS文件是:

filter = [];
show = false;
ngOnInit() {
  this.showArray();
}
showArray() {
    var a = new Promise(resolve=>{
      setTimeout(() => {
        this.filter = [3, 4, 4]
        resolve('resolved');
      }, 0);

    });

    a.then(function() {
      this.show= true;
    })
}

每当为数组分配任何值(可能来自远程API)时,我都希望将变量 show 设置为true。我没有得到结果。我已经浏览了许多与Promise相关的示例,但找不到这种方式的Promise实用示例。

1 个答案:

答案 0 :(得分:1)

将代码替换为-

a.then(() => {
  this.show= true;
})

您需要使用箭头功能代替现有的功能。

如果您正在使用这段代码-

a.then(function() {
  this.show= true;
})

这不会绑定到类级别的show变量,但是模板绑定是通过类级别的变量完成的,这就是现有代码无法正常工作的原因。

Working Example