Angular + 2 добавление значений в массив объектов и итерация - PullRequest
0 голосов
/ 28 июня 2019

У меня есть объекты Proposal [id, name, date] и ProposalVote [id, user, voice].Когда я получу заполненный массив предложений, я хочу показать каждую запись Предложения с общим количеством голосов, которые у него есть.Я звоню в свой сервис и получаю ProposalVote, но теперь мне нужно показать их вместе в моем component.html ...

Какая структура данных лучше всего подходит для этого?

Proposal: 1     TotalProposalVotes: 123
Proposal: 2     TotalProposalVote: 456

Учтите, что следующее, что мне нужно, это добавить итоговые баллы USERProposal (и другие вещи, которые будут добавлены далее)

Proposal: 1     TotalProposalVotes: 123     totalUSERProposalVotes: 3
Proposal: 2     TotalProposalVote: 456      totalUSERProposalVotes: 4

Я думаю, что могу изменить модель предложения, но это выглядит как грязный вариант.HashMap отлично подходит для первого случая, но не для второго.

ПРЕДЛОЖЕНИЯ

import { Moment } from 'moment';
import { IVoteProposal } from 'app/shared/model/vote-proposal.model';

export const enum ProposalType {
  STUDY = 'STUDY',
  APPROVED = 'APPROVED',
  DEVELOPMENT = 'DEVELOPMENT',
  PRODUCTION = 'PRODUCTION'
}

export const enum ProposalRole {
  USER = 'USER',
  ORGANIZER = 'ORGANIZER',
  MANAGER = 'MANAGER',
  ADMIN = 'ADMIN'
}

export interface IProposal {
  id?: number;
  creationDate?: Moment;
  proposalName?: string;
  proposalType?: ProposalType;
  proposalRole?: ProposalRole;
  releaseDate?: Moment;
  isOpen?: boolean;
  isAccepted?: boolean;
  isPaid?: boolean;
  voteProposals?: IVoteProposal[];
  proposalUserId?: number;
  postId?: number;
}

export class Proposal implements IProposal {
  constructor(
    public id?: number,
    public creationDate?: Moment,
    public proposalName?: string,
    public proposalType?: ProposalType,
    public proposalRole?: ProposalRole,
    public releaseDate?: Moment,
    public isOpen?: boolean,
    public isAccepted?: boolean,
    public isPaid?: boolean,
    public voteProposals?: IVoteProposal[],
    public proposalUserId?: number,
    public postId?: number
  ) {
    this.isOpen = this.isOpen || false;
    this.isAccepted = this.isAccepted || false;
    this.isPaid = this.isPaid || false;
  }
}

И ГОЛОСОВАНИЯ:

import { Moment } from 'moment';

export interface IVoteProposal {
  id?: number;
  creationDate?: Moment;
  votePoints?: number;
  proposalId?: number;
  proposalUserId?: number;
}

export class VoteProposal implements IVoteProposal {
  constructor(
    public id?: number,
    public creationDate?: Moment,
    public votePoints?: number,
    public proposalId?: number,
    public proposalUserId?: number
  ) {}
}

Спасибо за вашу помощь.Пожалуйста, объясните ваше решение как можно больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...