Angular 2 *ngFor 将可点击的电子邮件地址显示为 table 数据的一部分
Angular 2 *ngFor Display clickable email address as part of table data
在我的打字稿中,我有一个对象数组:
array: [
{
prop1: 'string1',
prop2: this.createEmailLink('email@email.com'),
prop3: 'string2'
},
{
// next object
}
]
我还有一个函数可以将其转换为仅值数组,因此我可以在元素中使用 *ngFor 并在其他页面上重用 table 代码。通过该函数后得到的数组是:
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 的类似案例,但我还没有找到问题的答案。提前致谢。
由于 createEmailLink
函数 returns 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
在我的打字稿中,我有一个对象数组:
array: [
{
prop1: 'string1',
prop2: this.createEmailLink('email@email.com'),
prop3: 'string2'
},
{
// next object
}
]
我还有一个函数可以将其转换为仅值数组,因此我可以在元素中使用 *ngFor 并在其他页面上重用 table 代码。通过该函数后得到的数组是:
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 的类似案例,但我还没有找到问题的答案。提前致谢。
由于 createEmailLink
函数 returns 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>