Как получить 2 поля из выбранного материала выберите ввод?

#angular #google-cloud-firestore

# #angular #google-облако-firestore

Вопрос:

У меня есть список выбора, который загружает список компаний. В настоящее время я могу получить только идентификатор или название компании. Мне нужно сохранить идентификатор и название выбранной компании в коллекции firestore.

Пробовали (selectionChange)="changeCompany($event.value)" , но это отправляет значение объекта object. Как мне получить имя из этого?

 loadedCompanies: Company[] = [];
 

HTML

       <mat-form-field>
        <mat-select formControlName="companyid" (selectionChange)="changeCompany($event.value)"  placeholder="Select Company" [compareWith]="compareFn">
          <mat-option *ngFor="let lC of loadedCompanies" [value]="lC.id" >
              {{lC.name}}
            </mat-option>
    </mat-select>
    </mat-form-field>
 

Метод changeCompany

     changeCompany(data) {
      this.selectedCompanyName = this.loadedCompanies[data].name;
      console.log('CName'   this.selectedCompanyName);
    }
 

Я хотел бы получить значения из выбранного объекта, а не делать второй запрос в firestore для получения названия компании.

Спасибо

Комментарии:

1. Что не так со значением объекта object? Вы имеете в виду, что это внутри вашего console.log? Вероятно, это регистрируется так, потому что вы объединяете его в строку. Попробуйте войти в систему с помощью `console.log (‘Whatever’, myValue), чтобы увидеть содержимое того, что вы пытаетесь зарегистрировать. А еще лучше, используйте инструкцию debugger. w3schools.com/jsref/jsref_debugger.asp

2. Спасибо. Я использовал отладчик, и я получаю это как значение данных: data = {id: "I9ZBt09idvviwbBFHz9r", address: "54 tyrgyt", contactemail: "fg@fdg", contactname: "gdfgfgdf", contactphone: "5435345534", …}

3. Если я попытаюсь data.name Я получаю [object Объект]

4. Нужно посмотреть, какое «имя» находится на вашем объекте

5. name: "Game"

Ответ №1:

Я решил это следующим образом:

     changeCompany(data) {
  const inspect = obj => {
    for (const prop in obj) {
      if (obj.hasOwnProperty(prop)) {
        console.log(`${prop}: ${obj[prop]}`);
        if (prop === 'name') {
          this.selectedCompanyName = obj[prop];
        }
        if (prop === 'field1') {
          this.selectedField1 = obj[prop];
        }
        if (prop === 'field2') {
          this.selectedField2 = obj[prop];
        }
      }
    }
  };
  inspect(data);
}