你好我开始使用角度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中发出警报。 谢谢你的帮助
答案 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);
});
}}