假设,我们有一些样式列表:
<ul>
<li>...</li>
<li>...</li>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
现在我们想要将每个<li>项目封装到单独的组件中.这样做,我们在结果DOM中得到这样的东西:
<ul>
<my-item><li>...</li></my-item>
<my-item><li>...</li></my-item>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
问题是,它打破了造型.我们将在项目,错误的边界等之间得到错误的边距.如果我们使用外部css,问题变得令人讨厌.
那么,有没有一种方法可以<li>直接应用样式而<my-item>无需编辑外部css文件?在Angular 1.x中有一个replace指令选项,但在Angular 2中它不存在.
Gün*_*uer 10
Angular2回答
正如@enguerranws所提到的那样,为组件使用属性选择器而不是标签选择器
@Component(selector: '[myLi]', ...
//@Component(selector: '[my-li]', ...
Run Code Online (Sandbox Code Playgroud)
并使用它
<li myLi>...
<!-- <li my-li>... -->
Run Code Online (Sandbox Code Playgroud)
Angular2没有该replace选项,并且它在Angular 1.x中也被弃用了一段时间.
要允许您<my-li>传递自定义内容的用户<ng-content></ng-content>向模板添加标记(您可以在<ng-content>应为每个<my-li>元素显示的标记之前和之后添加自定义内容.
@Component(
selector: '[myLi]', // '[my-li]',
template: '<ng-content></ng-content>'
...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2756 次 |
| 最近记录: |