我有一个角度应用程序,并且在其中一个组件中,我通过服务获取用户的通知(电子邮件)。服务返回一个对象数组,每个对象中都有电子邮件的信息,例如主题,发送者的用户ID等。 电子邮件对象数组的结构如下:
[{
UserId:"...",
Notification:{
Subject:null,
Body:"<div>...</div>",
.
.
.
},
.
.
.
},
.
.
.]
某些电子邮件没有主题,对象中的Subject
属性值为null
。我想为带有Subject:null
的电子邮件设置一个值。
this.notifService.getAllNotificationsForCurrentUser(userId)
.pipe(
map(emails => {
emails.map(email=>{
if(email.Notification.Subject === null){
email.Notification.Subject = "(No Subject)";
}
})
}
)
.subscribe(
result=> this.messages = result
);
我使用了map
运算符,它不起作用。而且有一些错误:
Cannot read property 'Notification' of undefined
我该如何解决?
答案 0 :(得分:3)
将rxjs map运算符与Array.prototype.map()一起使用。
第一个map
允许您修改电子邮件的数组,就像顺着流一样。它会映射到流元素上,每个元素是一组电子邮件。
第二个map
更改电子邮件数组,以将空白的subject
字段设置为no subject
。它映射到电子邮件数组,每个元素都是一封电子邮件。
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
);
答案 1 :(得分:1)
如果这只是出于显示目的,您应该这样做
scala> :silent
scala> val config=Map("secret"->"value")
scala> :silent
如果没有,则去映射数组。