你能否在Angular 2中拥有独立指令?

时间:2016-02-08 16:50:05

标签: javascript angularjs-directive angular angular2-template angularjs-components

我正在玩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.

1 个答案:

答案 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