为什么这个值在 Angular 的其他地方都被认为是未定义的?
Why is this value considered undefined everywhere else in Angular?
我有图书和评论对象。
books: Book[];
reviews: Review[];
填充这些数组的信息由组件的函数引入。
retrieveBooks(): void {
this.bookService.getAll()
.subscribe(
data => {
this.books = data;
},
error => {
console.log(error);
}
);
}
retrieveReviews(): void {
this.reviewService.getAll()
.subscribe(
data => {
this.reviews = data;
},
error => {
console.log(error);
});
}
代码有效,但无法识别对象数组。
它说未定义。
除非我在 .subscribe ( data => { } )
内工作
我可以输入一个 console.log,数组会按预期打印。
但是如果我试图在这个函数之外读取数组,它仍然会说未定义。
我不明白为什么会这样,因为我们已经把它写到我们一开始定义的组件数组中了。
不应该在整个组件中访问此数据吗?
您只定义了类型。 属性 没有赋值,因此它 returns undefined
。你应该事先初始化一个空数组。
@Component(){}
export class MyComponent {
books: Book[] = [];
reviews: Review[] = [];
... more stuff
}
旁注:在 subscribe
中分配书籍和评论的值需要一些时间之前,值是 undefined
(或者在我的例子中是 []
).
我有图书和评论对象。
books: Book[];
reviews: Review[];
填充这些数组的信息由组件的函数引入。
retrieveBooks(): void {
this.bookService.getAll()
.subscribe(
data => {
this.books = data;
},
error => {
console.log(error);
}
);
}
retrieveReviews(): void {
this.reviewService.getAll()
.subscribe(
data => {
this.reviews = data;
},
error => {
console.log(error);
});
}
代码有效,但无法识别对象数组。
它说未定义。
除非我在 .subscribe ( data => { } )
内工作我可以输入一个 console.log,数组会按预期打印。
但是如果我试图在这个函数之外读取数组,它仍然会说未定义。
我不明白为什么会这样,因为我们已经把它写到我们一开始定义的组件数组中了。
不应该在整个组件中访问此数据吗?
您只定义了类型。 属性 没有赋值,因此它 returns undefined
。你应该事先初始化一个空数组。
@Component(){}
export class MyComponent {
books: Book[] = [];
reviews: Review[] = [];
... more stuff
}
旁注:在 subscribe
中分配书籍和评论的值需要一些时间之前,值是 undefined
(或者在我的例子中是 []
).