Angular 如何使用rxjs运算符修改可观测值?
我有一个angular应用程序,在其中一个组件中,我通过服务获取用户通知(电子邮件)。该服务返回一个对象数组,每个对象中都有电子邮件的信息,如主题、发件人的用户ID等。 电子邮件对象数组的结构如下:Angular 如何使用rxjs运算符修改可观测值?,angular,rxjs,Angular,Rxjs,我有一个angular应用程序,在其中一个组件中,我通过服务获取用户通知(电子邮件)。该服务返回一个对象数组,每个对象中都有电子邮件的信息,如主题、发件人的用户ID等。 电子邮件对象数组的结构如下: [{ UserId:"...", Notification:{ Subject:null, Body:"<div>...</div>", . . . }, . . . }, . . .] 我使用了m
[{
UserId:"...",
Notification:{
Subject:null,
Body:"<div>...</div>",
.
.
.
},
.
.
.
},
.
.
.]
我使用了map
操作符,但它不起作用。它有一些错误:
Cannot read property 'Notification' of undefined
如何修复它?将运算符与一起使用
映射
允许您修改电子邮件数组,就像顺流一样。它映射到流元素,每个元素都是电子邮件的数组映射
更改电子邮件数组,将空的主题
字段设置为无主题
。它映射到电子邮件数组,每个元素都是一封电子邮件如果这只是出于显示目的,您应该这样做
{{email.Notification.Subject || '(No Subject)'}}
如果没有,请进行阵列映射。您好,请您再详细说明一下好吗?你的确切问题是什么?如果你尝试了某样东西,但它不起作用,那么发布你尝试过的东西,准确地告诉你预期会发生什么,以及发生了什么。我更新了我的问题。@Nastaran Heydari,你必须从内部映射返回结果,在我的示例中,我使用隐式返回。此外,您的内部映射不会返回任何内容,在这种情况下,请使用forEach
import { map } from 'rxjs/operators';
this.notifService.getAllNotificationsForCurrentUser(userId).pipe(
map(emails => {
return emails.map(email => ({
...email,
Notification: {
...Notification,
Subject: email.subject ? email.subject : 'no subject'
}
}));
})
).subscribe(
result=> this.messages = result
);
{{email.Notification.Subject || '(No Subject)'}}