Angular 2无法打印数组长度

时间:2017-01-17 10:42:13

标签: javascript arrays angular

你好我开始使用角度2但是我遇到了问题,在玩了一下之后我发现我甚至无法提醒我阵列的长度。我错过了一些明显的东西,但它在边缘工作(它总是打印出值)但不在chrome上,我得到这个错误[无法设置[object Object]的属性堆栈,它只有一个getter]

这是我的代码段:

export class GridComponent implements OnInit{
coils : ICoil[];
constructor(private _loadCoil : LoadCoil){

}

ngOnInit() : void{
    this._loadCoil.getAllCoils().subscribe(coils => this.coils = coils ); 
    alert(this.coils.length);
}}

因为我已经告诉过,当我在边缘测试它时总会提醒长度值,但它不会在chrome中发出警报。 谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

您的代码可能会出错并且为什么您看不到未定义的长度。因为您没有初始化阵列。

将其初始化为:coils : ICoil[] = [];

ngOnInit() : void{
    this._loadCoil.getAllCoils().subscribe(coils => this.coils = coils ); 
    alert(this.coils.length);
}}

应该是

ngOnInit() : void{
    this._loadCoil.getAllCoils().subscribe((coils) => {
         this.coils = coils; 
         alert(this.coils.length);
     }); 

}}

getAllCoils是一个异步函数。

意味着它的回调(subscribe)需要一些时间才能执行。因此,在此之前,您的this.coils将不会被定义。

答案 1 :(得分:1)

subscribe功能将在alert后生效。因为它是asynchronous电话。因此,当this._loadCoil.getAllCoils()将返回数据时,它的内容将起作用。

将警报放入subscribe功能

ngOnInit() : void{
    this._loadCoil.getAllCoils().subscribe(coils => {
        this.coils = coils; 
         alert(this.coils.length);
    });    
}}

答案 2 :(得分:1)

getAllCoils 是不合时宜的,因此将警报调用放入订阅回调中。

ngOnInit() : void{
 this._loadCoil.getAllCoils().subscribe(coils => {
  this.coils = coils;
  alert(this.coils.length);
 });      
}}