Установка автоматического идентификатора при добавлении пользователя в том же методе обновления в TypeScript

#javascript #angular #typescript

#javascript #angular #typescript

Вопрос:

Я добавляю метод Add в свой CRUD Api.

Я должен использовать ту же форму и тот же метод обновления. Когда я нажимаю на обновить, появляется URL-адрес detail/:id , вместо этого, когда я нажимаю на добавить, появляется ссылка detail/-1 .

В моем методе я должен контролировать, равен ли идентификатор -1 id, установить новый идентификатор, суммируя users.lenght 1 остальное, что я передаю в форму id, и другие параметры для обновления.

   getUser(): void {
    const id =  this.route.snapshot.paramMap.get('id');
    this.userService.getUser(id)
      .subscribe(user => this.user = user);
    if (id === -1) {
      id = this.users.length   1;
      this.userService.getUser(id)
        .subscribe(user => this.user = user);
    }
  }
  

Я не могу присвоить новый id старому идентификатору, потому что это константа.
Что я должен делать?

Это моя форма в html:

   <div *ngIf="user">
      <h2>{{user.firstName}} Details</h2>

      <div class="form-group">
        <label class="col-md-4 control-label" for="id">Id</label>
        <div class="col-md-4">
          <input id="id" name="id" type="text" placeholder="{{user.id}}"  class="form-control input-md" required="" readonly>
        </div>
      </div>

      /*rest of datas*/
  

Ответ №1:

Если вам нужно изменить активный маршрут, вы должны запустить навигацию.

Если вам просто нужен идентификатор в компоненте, вы можете использовать let вместо const или присвоить его другой переменной.

Ответ №2:

просто объявите переменную с let ключевым словом. Хотя я не уверен, что это то, о чем вы спрашиваете.

 let id =  this.route.snapshot.paramMap.get('id');
  

Ответ №3:

При использовании const вы не можете повторно определить переменную, вы должны использовать let

 let id =  this.route.snapshot.paramMap.get('id');
  

Также при использовании const рекомендуется использовать верхний регистр