Как создать один выбор со значением массива и отредактировать значение другого объекта - Angular - PullRequest
0 голосов
/ 10 июля 2020

У меня есть одна форма, которая редактирует пользователя администратором, и мне нужно сделать выбор, чтобы получить значения 'roleList' и отредактировать роль пользователя. У меня есть этот класс для пользователя

export class User {
  account: Account;
  cap: string;
  codiceFiscale: string;
  cognome: string;
  comune: string;
  dataNascita: Date;
  id: string;
  indirizzo: string;
  nazione: Nazione;
  nome: string;
  numeroTelefono: string;
  provincia: Provincia;
}

А во вложенном объекте «account» есть еще один объект «listaRuoli», который представляет собой массив (правила back-end).

Account.ts

export class Account {
  email?: string;
  id?: string;
  listaRuoli?: Ruoli[];
  password: string;
  username: string
}

Ruoli.ts

export class Ruoli{
  id: string;
  nomeRuolo: string;
}

Теперь я создаю один select, который отображает роли, но не t отредактируйте их

user-edit.component.ts

  user: User;
  roleList: Ruoli[];

 constructor(
    private _authHttp: AuthHttpService,
    private _route: Router,
    private _roleHttp: RoleHttpService
  ) {
    this.user = new User();
    this.user.account = new Account();
    this.user.provincia = new Provincia();
    this.user.nazione = new Nazione();
    this.user.account.listaRuoli = [];
  }

....

  updateUser() {
    this._authHttp.updateUser(this.user).subscribe((user) => {
      this.user = user;
      alert('Utente modificato' + this.ruolo);
    });
    this._route.navigate(['admin/user/list']);
  }

  getRoles() {
    this._roleHttp.getRoles().subscribe(roles => {
      this.roleList = roles;
    })
  }

Это выбор в HTML с помощью ngModule

user-edit.comp onet. html

          <select class="form-control mr-sm-2" [ngModel]="user.account.listaRuoli[0].nomeRuolo" #sel>
            <option *ngFor="let role of roleList" [value]="role.nomeRuolo">{{role.nomeRuolo}}</option>
          </select>

Как я могу изменить роль пользователя?

...