offline version v3
Запись на курсы по HTML, CSS, JavaScript, PHP, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
menu

Получение модели формы в Angular

С помощью директивы NgModel можно получить и сам объект NgModel, связанный с нужным нам элементом ввода.

Давайте изменим нашу форму, созданную в предыдущем уроке. Сделаем так, чтобы данные из инпутов записывались не в массив, а определялись из заданной моделью формы.

Зайдем в наш главный компонент и импортируем в него директиву NgModel:

import { Component } from '@angular/core'; import { NgModel } from '@angular/forms';

Далее вместо массива продуктов, мы создадим объект класса Product с изначально пустыми значениями. В функции addProduct в параметрах зададим свойства нашего продукта, привязанные к нашей модели NgModel. А в консоль выведем их весь объект нашей модели:

export class AppComponent { title: string = ''; price: number = 0; prodType: string = ''; product: Product = new Product('', 0, ''); prodTypes: string[] = ['fruits', 'vegetables', 'dairy']; addProduct(title: NgModel, price: NgModel, prodType: NgModel) { console.log(title); console.log(price); console.log(prodType); } }

Теперь зададим разметку в нашем HTML-шаблоне. К каждому полю ввода зададим соответствующую шаблонную переменную, которая значение примет модель каждого шаблона:

<div> <div class="form-group"> <label>Title</label> <input class="form-control" name="title" [(ngModel)]="product.title" #productTitle="ngModel" /> </div> <div class="form-group"> <label>Cost</label> <input type="number" class="form-control" name="price" [(ngModel)]="product.price" #productPrice="ngModel" /> </div> <div class="form-group"> <label>Product Type</label> <select class="form-control" name="prodType" [(ngModel)]="product.prodType" #productProdType="ngModel"> <option *ngFor="let prodType of prodTypes" [value]="prodType"> {{ prodType }} </option> </select> </div> <div class="form-group"> <button (click)="addProduct(productTitle, productPrice, productProdType)">Add Product</button> </div> </div> <div> <h3>Added product</h3> <p>{{productTitle.name}} : {{productTitle.model}}</p> <p>{{productPrice.name}} : {{productPrice.model}}</p> <p>{{productProdType.name}} : {{productProdType.model}}</p> </div>

Открыв наш проект в браузере вы увидите форму. Когда мы добавим новый продукт в нее, то он отобразится внизу страницы. А модель каждого параметра можно увидеть в консоли отладчика браузера.