属性指令

Attribute directive

出于某种原因,我无法 select 这个问题的任何 angular4 标签。我正在使用 Angular 4.

我创建了一个属性指令:

import { Directive, ElementRef } from '@angular/core';

@Directive({
    selector: '[SpDatePicker]'
})
export class DatepickerDirective {

    constructor(public element: ElementRef) {
        console.log(element.nativeElement);
    }
}

但是如果我尝试使用它,我会收到以下错误:

Can't bind to 'SpDatePicker' since it isn't a known property of 'div'.

用法:

<div [SpDatePicker]></div>

如果我将 selector 声明更改为:

selector: '.spdatepicker'

并使用以下 HTML:

<div class="spdatepicker"></div>

它工作正常。我查看了 the docs,看不出我做错了什么。谁能告诉我吗?

我创建了一个 Plunker 来演示这个问题。

属性指令不需要 [],这将导致 angular 将 SpDatePicker 视为 div@Input property


正如@Maximus 所说,您仍然可以通过在指令中添加 @Input() SpDatePicker 来使用 [SpDatePicker]


Plunker demo(对于两者).