我的目标是创建将某些输入放在焦点上的按钮.setFocus()
。问题是这些输入是由用户动态创建的。用户选择页面中有多少输入,因此我无法静态引用输入。
而且除了动态引用的问题,还有@ViewChild
or的@ViewChildren
问题,因为我们不能动态的使用它们。这也是一个需要解决的问题。我尝试使用ViewContainerRef
但没有成功。
我进行了很多研究,但没有发现任何可以解决我的问题的方法。这是我在 Stack Overflow 上的第一篇文章,如果我不够具体或者我提供的代码不够,请告诉我。
代码如下:
home.ts:
import { Component, ViewChild, ViewContainerRef } from '@angular/core';
import { BrowserModule } from "@angular/platform-browser";
import { FormsModule } from "@angular/forms";
import { NavController } from 'ionic-angular';
import { Storage } from '@ionic/storage';
//Providers
import { UserDataProvider, DataList } from '../../providers/user-data/user-data';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
Inputs:number[];
rowCount:number;
homeData: DataList;
titulo: string;
unidade: string = 'mL/min';
inputNumber: string = 'input';
@ViewChild('input') NBicoInput;
constructor(
public navCtrl: NavController,
public userData: UserDataProvider,
) {
}
setFocus(index){
this.inputNumber = 'input'+index;
this.NBicoInput.setFocus();
}
}
以及 home.html 的重要部分:
<ion-row *ngFor="let y of rowCount|times" text-center align-items-center>
<ion-col align-self-center col-2>{{y}}</ion-col>
<ion-col text-center align-self-center col-4><ion-input #input></ion-input></ion-col>
<ion-col align-self-center col-4></ion-col>
<ion-col class="empty-col" align-self-center col-2><button id= '{{y}}' (click)="setFocus(y)" ion-button small icon-only>
<ion-icon name="brush"></ion-icon></button></ion-col>
</ion-row>
简而言之,我想做的好像'input'
in@ViewChild
是一个临时变量。html 代码中的引用用 表示#input
。