我订阅了一个Rx返回并将其传递给Angular.ForEach循环但它的值未定义。但是,我设法在console.log print上获得结果。
以下是调用打字稿代码
this.wordPressBlogPostRepository.getPortfolios().subscribe(
(result) => {
this.stopLoading();
this.viewmodels = result;
console.log(this.viewmodels);
angular.forEach(this.viewmodels, function (value, key) {
this.viewmodels[key].title.rendered = value.title.rendered.replace("Softinn Portfolios: ", "");
});
},
(error) => {
swal({
title: 'Error',
text: error,
type: "error"
});
this.stopLoading();
}
);
以下是错误消息:
未捕获的TypeError:无法读取未定义的属性“viewmodels” 在AngularControllers?v = rVYJl6CURXT7t6FM4ZFRtRuO0C-mN9uPa6W1ArXQ9301:1 在Object.t [asforEach]
如果我改为
,它会起作用this.wordPressBlogPostRepository.getPortfolios().subscribe(
(result) => {
this.stopLoading();
this.viewmodels = result;
console.log(this.viewmodels);
for (var blogCounter = 0; blogCounter < this.viewmodels.length; blogCounter++) {
this.viewmodels[blogCounter].title.rendered = this.viewmodels[blogCounter].title.rendered.replace("Portfolios: ", "");
}
},
(error) => {
swal({
title: 'Error',
text: error,
type: "error"
});
this.stopLoading();
}
);
我错过了什么?我应该使用(完整)代替(结果)吗?
答案 0 :(得分:1)
可能是因为您this
函数中forEach
的上下文。
您可以尝试:
angular.forEach(this.viewmodels, (value, key) => {
this.viewmodels[key].title.rendered = value.title.rendered.replace("Softinn Portfolios: ", "");
});
由于胖箭头功能保持this