我正在玩Angular 2,我想做的是将一个独立指令直接分配给HTML中的元素。这可能吗?
指令:
import {Directive, ElementRef} from 'angular2/core';
@Directive({
selector: '[Slidernav]'
})
export class Slidernav {
constructor(private element: ElementRef) {
console.log('Slider Run');
}
}
我将它分配给任何HTML元素,如:
<div slidernav>Some content</div>
我问的原因是因为我不想使用Component在DOM中已经存在的HTML设置模板。
修改
因此,根据回复,这是组件
组件滑块
import {Component, View, ElementRef} from 'angular2/core';
@Component({
selector: 'Slider',
template: '<ng-content></ng-content>'
})
export class Slider {
constructor(private element: ElementRef) {
console.log('Slider');
}
}
的index.html
<Slider>
<div>hello world</div>
</Slider>
我希望Div能够与内容问候世界保持在Slider中。 AFAIK,它应该如何工作,基于我一直在阅读有关Transclusion的内容。但控制台错误是:
Error: The component Slider has 1 <ng-content> elements, but only 0 slots were provided.
答案 0 :(得分:4)
除Angular模板区分大小写外,应该可以正常工作
selector: '[Slidernav]'
...
<div slidernav>Some content</div>
应该是
selector: '[Slidernav]'
...
<div Slidernav>Some content</div>
或
selector: '[slidernav]'
...
<div slidernav>Some content</div>
除此之外,您可能希望使用带有
等模板的组件template: '<ng-content></ng-content>`
这样,您的组件只显示父组件作为子组件提供给您组件的HTML