我在 constants.ts 文件中有这样的定单数组
export const ORDERS = [
{
'id': 'PROCESSING',
'displayName': null
},
{
'id': 'SHIPPED',
'displayName': null
}
];
在我的组件中,我正在设置'displayName'的值
import { ORDERS } from './constants';
-----------------
--------------
setOrders() {
ORDERS.forEach((order: any) => {
if(order.id === 'PROCESSING') {
order.displayName = 'Processing';
}
if(order.id === 'SHIPPED') {
order.displayName = 'Shipped';
}
});
}
但是在这里,当我尝试在另一个函数中获取'displayName'的值时,它返回null,但是按照对象顺序,我可以看到'displayName'的值
getOrders() {
ORDERS.forEach((order: any) => {
console.log(order); // displayName exists in the object
console.log(order.displayName); // But here null
});
}
两个功能都在同一组件中。请帮我解决这个感谢。
更新:全面实施
getTimePeriod() {
return Promise.resolve((() => {
this.orderService.getTimePeriod()
.subscribe(
(data) => {
this.orderStatusList = data.configParameters;
this.orderStatusList.forEach(
(s: any) => {
if (s.status === 'PROCESSING') { this.setOrders(s.status, s.name); }
if (s.status === 'SHIPPED') { this.setOrders((s.status, s.name); }
}
);
},
error => {
this.errorMessage = this.orderService.handleError(error);
}
);
})());
}
setOrders(status, name) {
ORDERS.forEach((order: any) => {
if (order.id === status) {
order.displayName = name;
}
});
}
getOrders() {
return Promise.resolve((() => {
ORDERS.forEach((order: any) => {
const { displayName } = order;
console.log(order); // displayName exists in order
console.log(displayName); // Null
this.orderService.getOrdersByDisplayName(buildQuery(null, displayName, null, null))
.subscribe(
(data) => {
this.ordersWidgetInfo.push({
...order,
...data,
number: data.orders && data.orders.length,
});
},
error => {
console.log(`error for ${orderType} : ${error}`);
}
);
}
);
})());
}
答案 0 :(得分:0)
这样的错误发生的唯一方式(除了错误的代码)是无效的执行顺序。
但是,在尝试您的代码之后,它似乎可以正常工作。 See example on JSFiddle。
这使我得出结论,您的问题很可能是在getOrders
之前调用了setOrders
,因此是空值。要解决此问题,请先致电setOrders
,然后再致电getOrders
。