我需要在ngFor循环中创建唯一锚定名称/组件,以便将其与ComponentResolver.resolveComponent结合使用。使用ComponentResolver和Angular2中的ngFor创建动态锚点名称/组件
<div>
<table>
<tr *ng-for="#vIndex of vArr">
<td *ng-for="#hIndex of hArr">
<div #uniqueanchorname{{vIndex}}_{{hIndex}}></div>
</td>
</tr>
</table>
</div>
生成的HTML看起来应该是这样的:
<div>
<table>
<tr>
<td>
<div #uniqueanchorname0_0></div>
</td>
<td>
<div #uniqueanchorname0_1></div>
</td>
</tr>
<tr>
<td>
<div #uniqueanchorname1_0></div>
</td>
<td>
<div #uniqueanchorname1_1></div>
</td>
<td>
<div #uniqueanchorname1_2></div>
</td>
</tr>
</table>
</div>
有了,我可以使用DynamicComponentLoader,如:
loader.loadIntoLocation(responseDependentComponent, elementRef, 'uniqueAnchorName1_2');
生成的HTML不会被取代,看起来会如:
<div>
<table>
<tr>
<td>
<div #uniqueanchorname{{vIndex}}_{{hIndex}}></div>
</td>
<td>
<div #uniqueanchorname{{vIndex}}_{{hIndex}}></div>
</td>
</tr>
<tr>
<td>
<div #uniqueanchorname{{vIndex}}_{{hIndex}}></div>
</td>
<td>
<div #uniqueanchorname{{vIndex}}_{{hIndex}}></div>
</td>
<td>
<div #uniqueanchorname{{vIndex}}_{{hIndex}}></div>
</td>
</tr>
</table>
</div>
如果创建唯一的锚名称是不可能的。是否有其他方式将组件加载到特定位置?
可以尝试像'#{{” uniqueAnchorName'+ vIndex +' _'+ hIndex}}' –
我真的不明白你的问题。那工作?它没有?我没有尝试过,但唯一能看到的是在变量名中使用大写字母。如果您编写'uniqueAnchorName',则在ng2编译之前,浏览器会将其小写为'uniqueanchorname'。 –
@PankajParkar mustache({{xxx}})在属性中没有被替换,生成的html仍然看起来像#uniqueAnchorName {{vIndex}} _ {{hIndex}} –