私はAngular2を学ぶための請求書作成アプリを開発しています。私が打っている問題は、行に3つの入力が含まれている行項目コンポーネントを構築する方法です。オブジェクト入力の配列を持つ角度2のフォーム
角度1では、入力のコンテナにng-form
ディレクティブを追加することで簡単にこれを達成できます。ここに相当するのは何ですか?ここで
は私のコードです:
HTML:
<form name="form" ng-submit="$ctrl.submit(form)" novalidate>
<!-- some more code -->
<ul class="list invoice-table__body">
<li *ngFor="let item of model.lineItems; let i = index">
<input
type="text"
name="description"
class="col-sm-8"
[(ngModel)]="item.description">
<input
type="number"
name="quantity"
class="col-sm-2"
[(ngModel)]="item.quantity">
<input
type="number"
name="total"
class="col-sm-2"
[(ngModel)]="item.total">
</li>
</ul>
<!-- some more code -->
</form>
コンポーネント:
import { Component } from '@angular/core';
import { Invoice } from './invoice.model';
import { InvoiceLineItems } from './invoice-line-item.model';
@Component({
selector: 'create-invoice',
templateUrl: 'create-invoice/create-invoice.html'
})
export class CreateInvoiceComponent {
model: Invoice = new Invoice(
85,
'CAD',
null,
[ // lineItems
new InvoiceLineItems('Web development for BAnQ'),
new InvoiceLineItems('Sept 1 to 3', 14, 910),
new InvoiceLineItems('Sept 5 to 10', 34, 5293),
new InvoiceLineItems('Sept 11 to 20', 24, 5293),
new InvoiceLineItems('Sept 21 to 38', 11, 2493),
],
13989,
100,
200,
15000,
'',
null,
'$'
);
getTotal(): number {
return this.model.lineItems.reduce(
(a, b): number => a + (isNaN(b.total) ? 0 : b.total),
0);
}
}
あなたはどんな問題を抱えていますか?何も表示されていない、またはバインドされていませんか?ビルドエラーまたはコンソールエラー? – NPhillips
最後の配列項目の値が5回表示されます。エラーはありません。変わった点は、入力値を変更すると、配列内の適切なオブジェクトが変化するということです。 – justinledouxweb
入力の名前をインデックスに連結すると、正常に動作しますが、角の2つの方法ではないかどうかわかりません。 – justinledouxweb