У меня есть некоторый код, который получает массив в виде наблюдаемой, которая находится в отдельном компоненте.
Теперь, когда я инициализирую домашний компонент, я получаю массив, к которому я пытаюсь получить доступ, я получаю значение, когда Однако я получаю доступ к первому элементу, когда пытаюсь получить доступ к любому другому элементу, который я получаю неопределенным.
Как решить эту проблему.
Вот мой код. Контактный компонент
public contactsChanged = new Subject();
public updatedContact;
key = 'contacts';
mContacts = [
{
id: 0,
name: '',
number: ''
},
{
id: 1,
name : '',
number: ''
},
{
id: 2,
name : '',
number: ''
},
{
id: 3,
name : '',
number: ''
}
];
ngOnInit() {
this.appData.currentContacts().subscribe((contacts: [string]) =>
this.updatedContact = contacts);
this.getContact();
}
dismiss() {
this.modalController.dismiss({
dismissed: true
});
}
pickContact(contactId) {
this.mContacts[contactId].name = "Mitchell";
this.mContacts[contactId].number = (Math.random() * 0.5).toString();
this.appData.changeContacts(this.mContacts);
this.saveContacts();
// this.contacts.pickContact().then((contact) => {
// this.mContacts[contactId].name = contact.name.givenName;
// this.mContacts[contactId].number = contact.phoneNumbers[0].value;
// this.appData.changeContacts(this.mContacts);
// this.saveContacts();
// console.log('Contacts saved: ');
// });
}
saveContacts() {
this.storage.set(this.key, JSON.stringify(this.mContacts));
}
getContact() {
this.storage.get(this.key).then((val) => {
console.log('Contact Name: ', val);
if (val != null && val !== undefined) {
this.mContacts = JSON.parse(val);
this.appData.changeContacts(this.mContacts);
}
});
}
}
Служба, которую я использую для наблюдаемых
private contacts = new BehaviorSubject<[string]>(['']);
currentContacts(): Observable<[string]> {
return this.contacts.asObservable();
}
changeContacts(contacts) {
this.contacts.next(contacts);
}
и домашний компонент, который пытается отобразить данные
this.appData.currentContacts().subscribe((contacts: [string]) => {
this.mContacts = contacts;
this.numberOne = this.mContacts[0].number;
// this.numberTwo = this.mContacts[1].number;
console.log("mContacts: " , this.mContacts);
console.log("Contacts: " , contacts );
console.log("mContacts num: " + this.mContacts[1].number);
});
Теперь, когда Я пытаюсь позвонить this.mContacts[0].number
, тогда это работает, но если я пытаюсь this.mContacts[1].number
, тогда я получаю ошибку
console.log(this.mContacts)
возвращает
0: Object { id: 0, name: "Mitchell", number: "0.27670880550635446" }
1: Object { id: 1, name: "Mitchell", number: "0.3120836066243317" }
2: Object { id: 2, name: "Mitchell", number: "0.20501487579574068" }
3: Object { id: 3, name: "Mitchell", number: "0.17382789003990085" }
Ошибка вывода при попытке вызвать this.mContact[1].number
ERROR TypeError: "this.mContacts[1] is undefined"