你能在 Angular 中有一个独立的指令吗 2

Can you have a stand alone directive in Angular 2

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

我问的原因是因为我不想使用组件设置 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 与内容 hello world 一起保留在 Slider 中。 AFAIK 这就是基于我一直在阅读的关于 Transclusion 的内容它应该如何工作。但是控制台错误是:

Error: The component Slider has 1 <ng-content> elements, but only 0 slots were provided.

除了 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 父级作为子级提供给您的组件