在 IONIC2 中获取动态创建的离子输入值
Getting dynamically created ion-input value in IONIC2
我有以下 HTML 部分,其中 ion-item
是基于 *ngFor
动态创建的
<ion-list *ngIf="Label_view">
<ion-item style="Float:Right;margin-left: 4%;" *ngFor="let bil of arr_label;let i=index ">
<ion-label floating>{{bil}}</ion-label>
<ion-input [(ngModel)]="array" id={{i}} type="text" maxlength="5"></ion-input>
</ion-item>
注册
我必须将 ion-input
的值放入 component
中。我已经使用 [(ngModel)]
值绑定到数组。
我的组件端
array:any[]=[];
Blr_regis()
{
console.log( array);
// console.log(document.getElementById("1").Value);
var x=document.getElementById("1").Value;
console.log(x);
}
我得到未定义的控制台输出。
是不是少了什么?
问题是因为您试图将数组与输入元素绑定。它应该绑定到字符串或数字(或数组的单个位置)。
而不是做这样的事情:
<ion-item style="Float:Right;margin-left: 4%;" *ngFor="let bil of arr_label;let i=index ">
<ion-label floating>{{bil}}</ion-label>
<ion-input [(ngModel)]="array" id={{i}} type="text" maxlength="5"></ion-input>
</ion-item>
并且 *ngFor
中有这两个 let
,为什么不将所有内容放在同一个数组中,如下所示:
this.newArray : Array<{id: number, value: string}> = [];
// Assuming the `arr_label` exists and it has been properly initialized
for(let i=0; i < arr_label.length; i++) {
this.newArray.push({ id: i, value: arr_label[i] });
}
然后在您看来:
// We only iterate over the newArray because all the information we need is there
<ion-item style="Float:Right;margin-left: 4%;" *ngFor="let bill of newArray">
<ion-label floating>{{bill.value}}</ion-label>
<ion-input [(ngModel)]="array[bill.id]" type="text" maxlength="5"></ion-input>
</ion-item>
请注意,我们现在使用 id
(即 0、1 等)将 input
绑定到数组的单个位置。
您可以找到有效的 plunker here。看看 Page1.ts
和 Page1.html
中的代码
我有以下 HTML 部分,其中 ion-item
是基于 *ngFor
<ion-list *ngIf="Label_view">
<ion-item style="Float:Right;margin-left: 4%;" *ngFor="let bil of arr_label;let i=index ">
<ion-label floating>{{bil}}</ion-label>
<ion-input [(ngModel)]="array" id={{i}} type="text" maxlength="5"></ion-input>
</ion-item>
注册
我必须将 ion-input
的值放入 component
中。我已经使用 [(ngModel)]
值绑定到数组。
我的组件端
array:any[]=[];
Blr_regis()
{
console.log( array);
// console.log(document.getElementById("1").Value);
var x=document.getElementById("1").Value;
console.log(x);
}
我得到未定义的控制台输出。 是不是少了什么?
问题是因为您试图将数组与输入元素绑定。它应该绑定到字符串或数字(或数组的单个位置)。
而不是做这样的事情:
<ion-item style="Float:Right;margin-left: 4%;" *ngFor="let bil of arr_label;let i=index ">
<ion-label floating>{{bil}}</ion-label>
<ion-input [(ngModel)]="array" id={{i}} type="text" maxlength="5"></ion-input>
</ion-item>
并且 *ngFor
中有这两个 let
,为什么不将所有内容放在同一个数组中,如下所示:
this.newArray : Array<{id: number, value: string}> = [];
// Assuming the `arr_label` exists and it has been properly initialized
for(let i=0; i < arr_label.length; i++) {
this.newArray.push({ id: i, value: arr_label[i] });
}
然后在您看来:
// We only iterate over the newArray because all the information we need is there
<ion-item style="Float:Right;margin-left: 4%;" *ngFor="let bill of newArray">
<ion-label floating>{{bill.value}}</ion-label>
<ion-input [(ngModel)]="array[bill.id]" type="text" maxlength="5"></ion-input>
</ion-item>
请注意,我们现在使用 id
(即 0、1 等)将 input
绑定到数组的单个位置。
您可以找到有效的 plunker here。看看 Page1.ts
和 Page1.html