#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);
}