你能在 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 父级作为子级提供给您的组件
我在玩 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 父级作为子级提供给您的组件