3 回答
TA贡献1816条经验 获得超6个赞
使用现有的表格元素作为选择器
table元素不允许将<table-line>元素作为子元素,浏览器只会在找到它们时将其删除。您可以将其包装在组件中,并仍然使用允许的<tr>标签。只是"tr"用作选择器。
使用 <template>
<template>也应被允许,但并非在所有浏览器中都适用。Angular2实际上从不<template>向DOM 添加元素,而只是在内部对其进行处理,因此,它也可以在所有带有Angular2的浏览器中使用。
属性选择器
另一种方法是使用属性选择器
@Component({
selector: '[my-tr]',
...
})
像
<tr my-tr>
TA贡献1811条经验 获得超5个赞
我发现该示例非常有用,但在2,2.3版本中不起作用,因此经过大量的头部抓挠后,只需进行一些小改动即可使其再次起作用。
import {Component, Input} from '@angular/core'
@Component({
selector: "[my-tr]",
template: `<td *ngFor='let item of row'>{{item}}</td>`
})
export class MyTrComponent {
@Input("line") row:any;
}
@Component({
selector: "my-app",
template: `<h1>{{title}}</h1>
<table>
<tr *ngFor="let line of data" my-tr [line]="line"></tr>
</table>`
})
export class AppComponent {
title = "Angular 2 - tr attribute selector!";
data = [ [1,2,3], [11, 12, 13] ];
constructor() { console.clear(); }
}
TA贡献1891条经验 获得超3个赞
这是一个使用带有属性选择器的组件的示例:
import {Component, Input} from '@angular/core';
@Component({
selector: '[myTr]',
template: `<td *ngFor="let item of row">{{item}}</td>`
})
export class MyTrComponent {
@Input('myTr') row;
}
@Component({
selector: 'my-app',
template: `{{title}}
<table>
<tr *ngFor="let line of data" [myTr]="line"></tr>
</table>
`
})
export class AppComponent {
title = "Angular 2 - tr attribute selector";
data = [ [1,2,3], [11, 12, 13] ];
}
输出:
1 2 3
11 12 13
当然,MyTrComponent中的模板会涉及更多,但是您可以理解。
旧的(beta.0)矮人。
- 3 回答
- 0 关注
- 805 浏览
添加回答
举报