Довольно простая ситуация в соответствии с заголовком, при попытке добавить свойство ParticipatingType к объекту события, если человек посещает (поэтому я могу изменить статус в представлении).
Другие примечания, я работаю с Angularfire2 и возвращенные данные являются наблюдаемым массивом Event [].Когда я изменяю возврат на return (console.log({ ...event, attendingType: currentUser.type } as eventWithAttendance));
, он печатает дополнительное свойство штраф.
Вот интерфейс
export interface Event {
schoolId: string;
eventId: string;
name: string;
date: Date;
timeStart: number;
timeEnd: number;
volunteersRequired: boolean;
attendance?: Array<EventUser>;
imageUrl: string;
contactName: string;
contactPhone: number;
contactEmail: string;
description: string;
}
export interface EventUser {
id: string;
email: string;
name: string;
type: ATTENDANCE;
}
export enum ATTENDANCE {
attending = 'attending',
notAttending = 'notAttending',
volunteering = 'volunteering'
}
, а вот код для файла ts
interface eventWithAttendance extends Event {
attendingType: ATTENDANCE;
}
ionViewDidLoad() {
this.activeSchool = this.data.activeSchool;
//this.events = this.data.getEvents(this.activeSchool.schoolId).pipe();
this.auth.user.subscribe((user) => {
this.user = user;
});
this.events = this.data.getEvents(this.activeSchool.schoolId)
.pipe(
map((events) => {
events.map( (event) => {
let currentUser = event.attendance.find(user => user.id === this.user.uid);
if(currentUser) {
return ({ ...event, attendingType: currentUser.type } as eventWithAttendance);
} else {
return event;
}
});
return events as eventWithAttendance[];
})
);
// Not a long term solution
this.currentDate = new Date().getTime(); // so we don't display old events
}