无法将输入字段值传递给 Angular 中的服务 2

cannot pass the input field value to service in Angular 2

接触-bar.component.ts

saveContacts(): void{
var contact = new Contact({});
contact.id = 1;
contact.name = 
(<HTMLInputElement>document.getElementById("contactName")).value;
contact.mobile = parseInt((<HTMLInputElement>document.getElementById("contactMobile")).value);
this.contactService.saveContact(contact);
}

contact.service.ts

saveContact(contact: Contact) {
    var contacts: Array<Contact> = 
JSON.parse(LocalStorage.getItem("contacts"));
    contacts.push(contact);
    localStorage.setItem("contacts", JSON.stringify(contacts));
}

Error: Cannot read property 'push' of null

首先关于您的错误:您正在收到 Cannot read property 'push' of null 因为您正在尝试获取联系人数据(通过 localstoarge ) 不存在。这就是为什么在将数据推送到数组时会提示您出现该错误的原因。

但是,您的代码中存在一些问题需要修复。

  1. 删除这一行: var contacts: Array<Contact> = JSON.parse(LocalStorage.getItem("contacts"));

  2. 不要将数据作为数组发送,请尝试以下操作:

代码:

var contact =  {
    contact.id : 1;   
    contact.name:(<HTMLInputElement>document.getElementById("contactName")).value;  
    contact.mobile: parseInt((<HTMLInputElement>document.getElementById("contactMobile")).value);
    }

this.contactService.saveContact(contact);

**contact.service.ts**

saveContact(contact: any) {
    localStorage.setItem("contacts", JSON.stringify(contact));
}