Angular 2 *ngFor 将可点击的电子邮件地址显示为表格数据的一部分

Posted

技术标签:

【中文标题】Angular 2 *ngFor 将可点击的电子邮件地址显示为表格数据的一部分【英文标题】:Angular 2 *ngFor Display clickable email address as part of table data 【发布时间】:2017-07-07 11:34:07 【问题描述】:

在我的打字稿中,我有一个对象数组:

array: [
 
   prop1: 'string1',
   prop2: this.createEmailLink('email@email.com'),
   prop3: 'string2'
 ,
 
   // next object
 
]

我还有一个函数可以把它变成一个只有值的数组,所以我可以在元素中使用 *ngFor 并在其他页面上重用表格代码。通过该函数后,结果数组为:

array: [
  ['string1', 'emailaddress', string2'], 
  [//next object]
]

我的 html 代码在 ng-container 中创建行和列:

<ng-container *ngFor="let row of array>
 <tr class="some-class">
    <td *ngFor="let column of row">column</td>
 </tr>
</ng-container>

这一切都很好,除了我需要可点击的电子邮件地址(href="mailto:...")。我在我的打字稿文件中创建了一个函数 this.createEmailLink(email),它将电子邮件地址转换为字符串。

<a href="mailto:email@email.com">email@email.com</a>

但是,这个生成的字符串显示为如上所示,而不是呈现为 html。

我在这里搜索并看到了涉及 innerHtml 的类似案例,但我还没有找到我的问题的答案。提前致谢。

【问题讨论】:

【参考方案1】:

由于createEmailLink 函数将HTML 作为字符串返回,因此您需要绑定到innerHTML 属性,正如您之前阅读的那样。这可以按如下方式完成:

<ng-container *ngFor="let row of array>
 <tr class="some-class">
    <td *ngFor="let column of row">
        <div [innerHTML]="column"></div>
    </td>
 </tr>
</ng-container>

Demo

【讨论】:

非常感谢!这正是我需要的解释。非常感谢演示。

以上是关于Angular 2 *ngFor 将可点击的电子邮件地址显示为表格数据的一部分的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 - NgFor 中与 NgModel 的 2 路绑定

从 Angular 2 理解 *ngFor

在 ngFor 中计数 - Angular 2

Angular 2 - NgFor 使用数字而不是集合

使用 *ngFor 的 Angular 2 第一项在数组中丢失

Angular 2 ngFor 在索引 + 2 处错误地更改值