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

标签 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>

我问的原因是因为我不想使用组件使用 DOM 中已经存在的 HTML 设置模板。

编辑

所以根据响应,这就是组件

组件 slider

 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

关于javascript - 你能在 Angular 2 中有一个独立的指令吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274885/

相关文章:

java - 使用 ionic 3 进行 HTTP Post

typescript - Angular2在路由器导出之外获取路由器参数

javascript - 如何将焦点设置到 TextAngular 的 div

mysql - 如何使用 MEAN 堆栈(MySQL、Express、Angular、Node)将数据插入数据库

javascript - 动态创建元素的 Angular ng-hide

Angular - 使用 ng-container 循环问题

javascript - 在 OWL Carousel 当前项目上添加类

javascript - Jquery更改选定选项麻烦

javascript - 更改输入框时启用保存按钮

javascript - Wordpress 网站上的不安全 <form> 调用