Ionic / Angular Как добавить данные в список - PullRequest
3 голосов
/ 07 октября 2019

У меня есть приложение, над которым я работаю, в данный момент я работаю над разделом, в котором пользователь нажимает на элемент с надписью «Экстренные контакты». Затем пользователю предоставляется список из 5 пустых блоков, каждый из которых имеет название метки: номер:

, пользователь нажимает на блок и затем выбирает контакт.

enter image description here

В настоящий момент я могу заполнить один из блоков именем и номером, которые пользователь выбирает из списка контактов.

здесь указан соответствующий код

import { Component, OnInit } from '@angular/core';
import { Contacts, Contact, ContactField, ContactName } from '@ionic-native/contacts/ngx';
@Component({
  selector: 'app-contact-component',
  templateUrl: './contact-component.component.html',
  styleUrls: ['./contact-component.component.scss'],
})
export class ContactComponentComponent implements OnInit {

  constructor(private contacts: Contacts) { }

  ngOnInit() {}
  cName:any;
  cNumber:any;
  pickContact() {
    this.contacts.pickContact().then((contact) => {
    this.cName = contact.name.givenName;
    this.cNumber = contact.phoneNumbers[0].value;
      // console.log(cNumber);
    });
  }
}

здесь hmtl, который повторяется 5 раз, чтобы сделать 5 блоков

  <ion-grid>
    <ion-row>
      <ion-col>
        <ion-item-group (click) = "pickContact()">
          <ion-card>
              <ion-item lines = "none">             
                  <ion-label class="ion-text-wrap">Name: {{cName}}</ion-label>        
                </ion-item>
                <ion-item lines = "none" >
                  <ion-label class="ion-text-wrap">Number: {{cNumber}}</ion-label>
                </ion-item>       
          </ion-card>            
        </ion-item-group>

Моя проблема в том, что я не знаю, как это повторить, не имея куч кода.

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

есть предложения?

1 Ответ

1 голос
/ 07 октября 2019

Angular является исключительным при обработке списков. Действительно, вам не нужно жестко кодировать весь список.

Вам нужна директива * ngFor .

.html file

<ion-card *ngFor="let contact of emergencyContacts; let i=index">
    <ion-item-group (click)="pickContact(i)">
        <ion-item lines = "none">             
            <ion-label class="ion-text-wrap">Name: {{contact.name}}</ion-label>        
        </ion-item>
        <ion-item lines = "none" >
          <ion-label class="ion-text-wrap">Number: {{contact.number}}</ion-label>
        </ion-item>  
    </ion-item-group>     
</ion-card> 

.ts file

export class ContactComponentComponent implements OnInit {

/*
of course, the following array would be better to be created by a loop
I leave it this way to be easier to understand
*/
      emergencyContacts = [
        {name: '', number: ''},
        {name: '', number: ''},
        {name: '', number: ''},
        {name: '', number: ''},
        {name: '', number: ''}
      ]

      constructor(private contacts: Contacts) { }

      ngOnInit() {}

      pickContact(i) {
          this.contacts.pickContact().then((contact) => {
              this.emergencyContacts[i].name = contact.name.givenName;
              this.emergencyContacts[i].number = contact.phoneNumbers[0].value;
          });
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...