Как редактировать и обновлять динамически добавленные входные значения [закрыто]

Вы можете передать обратный вызов и вызвать обратный вызов внутри асинхронного вызова

примерно так:

class func getGenres(completionHandler: (genres: NSArray) -> ()) {
    ...
    let task = session.dataTaskWithURL(url) {
        data, response, error in
        ...
        resultsArray = results
        completionHandler(genres: resultsArray)
    }
    ...
    task.resume()
}

, а затем вызвать этот метод:

override func viewDidLoad() {
    Bookshop.getGenres {
        genres in
        println("View Controller: \(genres)")     
    }
}
0
задан Empty_Soul 16 January 2019 в 15:20
поделиться

2 ответа

Когда вы работаете с формой в Angular, попробуйте получить доступ и работать с данными из директив формы: FormGroup, FormArray и т. Д.

В своем коде вы объединили вывод данных из простого массива контактов и попытались смешать его с элементами управления формой.

Создайте группу форм для всей формы правильно, чтобы она соответствовала вашему интерфейсу, затем используйте данные из нее в форме, особенно если у вас есть возможность изменить ее в форме.

Используя formControl на входах и т. Д., Ваши данные изменяются на вводе пользователем, поэтому вы можете получить их с помощью свойства .value. Когда вы группируете данные в formGroups, вы можете получить доступ ко всем затем агрегированным данным с помощью formGroup.value, где будут все созданные вами структура и данные.

Я обновил ваш стек. С частично реализованным, что я сказал. Продолжайте в том же духе, и вы получите поддерживаемый и вполне читаемый код.

https://stackblitz.com/edit/angular-movie-read-load-json-sample-eg-l6awjk?file=src/app/app.component.html

[ 1113] Обновление

Пример редактирования адреса в stackblitz: https://stackblitz.com/edit/angular-movie-read-load-json-sample-eg-w9ty9b? файл = SRC / приложение / app.component.html

0
ответ дан marc_s 16 January 2019 в 15:20
поделиться

попробуйте этот онлайн-пример

Я изменил это:

  • используйте Режим обновления , если выбран адрес или Добавьте режим , если это не
  • , добавьте ваши данные формы в массив контактов для определенного индекса
  • обновите выбранный адрес из вашего редактировать данные

  selectAddr(addr) {
    this.newAttribute.addressType = addr.addressType;
    this.newAttribute.postalCode = addr.postalCode;
    this.newAttribute.city = addr.city;

    this.selectedAddr = addr;
  }

  saveAddress(index, form: FormGroup) {
    const mode: 'update' | 'add' = this.selectedAddr ? 'update' : 'add';

    if (mode === 'add') {
      this.contacts[index].addresses.push({ ...this.newAttribute });
    } else if (mode === 'update') {
      Object.assign(this.selectedAddr, this.newAttribute);
    }

    // reset
    this.selectedAddr = undefined;
    form.reset();
  }
<div class="main" *ngFor="let contact of contacts;let i = index">

<form [formGroup]="addForm" #myForm>

  <p>Name: {{contact.name}}</p>
  <br>
<!--Address section-->
      <div  class="address-sec">
        <p id="addr">Addresses</p>
        <br>
        <table style="width:100%" *ngFor="let addr of contact.addresses">
            <tr>
                <td>
                  <div id="field-type">
                      <mat-chip-list>
                        <mat-chip color="primary" (click)="selectAddr(addr)" selected>{{addr.addressType}}</mat-chip>
                      </mat-chip-list>
                  </div>
                </td>
                <td>
                    <div class="field-data">
                   {{addr.city}}-{{addr.postalCode}}
                </div>
                  </td>
                <td>
                    <div class="field-data">
                    <b>Delete</b>
                   </div>
                </td>
            </tr>
          </table>
        <hr>
        <br>
      </div>
  <br>
  <!--Address Section-->

  <mat-form-field>
    <mat-select formControlName="addressType" placeholder="Type" [(ngModel)]="newAttribute.addressType">
        <mat-option *ngFor="let addressType of addresstypes" [value]="addressType.value">
            {{addressType.viewValue}}
        </mat-option>
    </mat-select>
</mat-form-field>
			
<br>
     
<mat-form-field >
    <input matInput formControlName="postalCode"  [(ngModel)]="newAttribute.postalCode"  placeholder="Postal Code" >
</mat-form-field>
<br>
<mat-form-field >
    <input matInput formControlName="city"  [(ngModel)]="newAttribute.city"  placeholder="City" >
</mat-form-field>
<br>

     <br><br><br><br>
        <button mat-flat-button    (click)="saveAddress(i,myForm)">Save</button>
</form> 
<br>
<hr>
</div>

0
ответ дан Chunbin Li 16 January 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: