Angular 如何使用rxjs运算符修改可观测值?

Angular 如何使用rxjs运算符修改可观测值?,angular,rxjs,Angular,Rxjs,我有一个angular应用程序,在其中一个组件中,我通过服务获取用户通知(电子邮件)。该服务返回一个对象数组,每个对象中都有电子邮件的信息,如主题、发件人的用户ID等。 电子邮件对象数组的结构如下: [{ UserId:"...", Notification:{ Subject:null, Body:"<div>...</div>", . . . }, . . . }, . . .] 我使用了m

我有一个angular应用程序,在其中一个组件中,我通过服务获取用户通知(电子邮件)。该服务返回一个对象数组,每个对象中都有电子邮件的信息,如主题、发件人的用户ID等。 电子邮件对象数组的结构如下:

[{
  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)'}}