【发布时间】:2020-11-07 21:03:46
【问题描述】:
所以我有一个 Angular 组件。
对于一些包含我想要使用的数据的数组对象:
books: Book[] = [];
reviews: Review[] = [];
这就是我的 ngOnInit() 的样子:
ngOnInit(): void {
this.retrieveBooks();
this.retrieveReviews();
this.setRatingToTen();
}
我用这个写书和评论到对象数组。 这是通过服务“订阅”数据来完成的:
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);
});
}
所以我的下一个函数只是“处理数据”的一个例子。
在此示例中,我只想将每本书的所有总评分更改为 10:
setRatingToTen(): void {
this.books.forEach(element => {
element.totalrating = 10;
});
console.log(this.books);
}
我一直试图解决的问题是:
this.books 是一个空数组。
我认为原因是因为这个函数在数据订阅之前运行。
如果是这样,那我对ngOnInit的理解肯定不对。
我以为它会按顺序调用函数。
也许还是这样,只是它们没有按顺序完成。
所以我的问题是:
1.为什么是空数组?
(我说的对吗?还是还有更多?)
2。 Angular 开发人员如何编写函数以使它们以所需的顺序运行?
(因为数据需要在那里以便我可以使用它,我该如何避免这个问题?)
(3.) 额外问题:
(如果你有时间,请,谢谢)
我的目标是为每本 this.reviews.title 等于 this.books.title 的书拉 this.reviews.rating,得到一个平均分;然后用平均值覆盖 this.books.totalrating 的“0”占位符。我怎样才能重写 setRatingToTen() 函数来完成这个?
【问题讨论】:
标签: javascript angular typescript mean