Javascript Angular2重复选择器
我正在做这样的事情,我正在动态地声明选择器Javascript Angular2重复选择器,javascript,angular,Javascript,Angular,我正在做这样的事情,我正在动态地声明选择器 <div ngFor="let x of y;let i = index;"> <input *ngIf="i === 0" #selector0 type="number" value="{{item.value}}"> <input *ngIf="i === 1" #selector1 type="number" value="{{item.value}}"> </div> 有没
<div ngFor="let x of y;let i = index;">
<input *ngIf="i === 0" #selector0 type="number" value="{{item.value}}">
<input *ngIf="i === 1" #selector1 type="number" value="{{item.value}}">
</div>
有没有一种方法可以像下面这样做,我不需要重复我自己
<input #selector{{i}} type="number" value="{{item.value}}">
<button (click)="submit(selector0)">
我不是在寻找替代方法,只是想知道是否可以使用动态选择器。将其分配给数据属性,然后可以使用javascript的querySelector
<input attr.input="{{i}}" type="number" value="{{item.value}}">
所以我们从这里开始,Angular将其定义为“模板参考变量”: 好的,让我们试着找到它的来源 所以我们试图解析出元素。。。让我们看看它是如何定义的: 我将设置一个断点,看看发生了什么 编辑: 我在“_parseAttr”函数中放置了一个断点,以查看它在查看模板引用时看到的内容: 以下是查找绑定的调用:
var hasBinding = _this._parseAttr(isTemplateElement, attr, matchableAttrs, elementOrDirectiveProps, animationProps, events, elementOrDirectiveRefs, elementVars);
以及调试器为属性名称输出的内容:
attr = Attribute {name: "#testerno{{check}}", value: "", sourceSpan: ParseSourceSpan, valueSpan: undefined}
因此,它看起来像属性namename:“#testerno{{{check}}”
没有被解析以查看{{check}}是否是角度变量,它只是将其解释为字符串的一部分
因此,你不能做你上面说的事。在本例中,它认为引用名称是“#testerno{{{check}”
或者,在您的例子中,选择器{{i}
请注意,这是有意义的,因为“#”是在编译器级别使用的,并且不存在于输出html中,因此它无法动态创建该引用。如何在类中使用
#input{{i}
?也许可以使用@ViewChildren
来获取所有输入信息?我更新了我的问题以使其更清晰-我想在线完成这些我不明白。您是否也为每个输入生成一个按钮?你真正的目标是什么?我想循环,让我的循环生成输入,每个输入都有一个唯一的选择器。