Итак, я много работал с AngularJS, но я новичок в Angular 8. Теперь моя проблема связана с двусторонним связыванием данных Angular. Я уже искал stackoverflow, но не смог найти правильное решение, и именно поэтому я публикую это. Мой код содержит внешний объект данных следующим образом:
export class Contact {
name: string;
email: string;
phone: string;
message: string;
}
Я импортировал вышеупомянутое в свой компонент, где я должен использовать этот объект класса. Соответствующий код из моего компонента:
import { Contact } from '../contactDetails';
contact: Contact;
processForm(){
const allInfo=`My name is ${this.contact.name}. My email is ${this.contact.email}. My phone number is
${this.contact.phone}. My message is ${this.contact.message}`;
alert(allInfo);
}
Соответствующий код соответствующего шаблона:
<form class="contact-bg" id="contact-form" name="contact-form">
<input type="text" name="name" class="form-control" placeholder="Your Name*"
[ngModel]="contact?.name" (ngModel)="contact.name"/>
<input type="email" name="email" class="form-control" placeholder="Your E-mail*"
[ngModel]="contact?.email" (ngModel)="contact.email"/>
<input type="text" name="phone" class="form-control" placeholder="Phone Number"
[ngModel]="contact?.phone" (ngModel)="contact.phone"/>
<textarea name="message" class="form-control" placeholder="Your Message*" style="height:120px"
[ngModel]="contact?.message" (ngModel)="contact.message"></textarea>
<button (click)="processForm(contact)" id="submit" type="submit" name="submit">Send</button>
</form>
Проблема, с которой я сталкиваюсь, заключается в том, когда я пытаюсь отправить свою форму после заполняя все детали, я получаю сообщение об ошибке:
ERROR TypeError: Cannot read property 'name' of undefined
at ContactComponent.processForm (contact.component.ts:25)
at Object.eval \[as handleEvent\] (ContactComponent.html:47)
at handleEvent (core.js:38098)
at callWithDebugContext (core.js:39716)
at Object.debugHandleEvent \[as handleEvent\] (core.js:39352)
at dispatchEvent (core.js:25818)
at core.js:37030
at HTMLButtonElement.<anonymous> (platform-browser.js:1789)
at ZoneDelegate.invokeTask (zone-evergreen.js:391)
at Object.onInvokeTask (core.js:34182)][1]][1]
Прилагается скриншот для того же.
Я уверен, что есть какая-то синтаксическая ошибка, но я ' Я не могу найти ни одного. Может кто-нибудь, пожалуйста, помогите мне узнать то же самое? Заранее спасибо.
PS: Я дал только соответствующий фрагмент кода из моего компонента и шаблона, а не полный код. Пожалуйста, предположите, что код шаблона уже есть.