2017-07-25 177 views
1

无论出于何种原因,我无法为此问题选择任何angular4标签。我采用了棱角分明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> 

如果我改变选择DECL aration到:

selector: '.spdatepicker' 

并使用以下HTML:

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

它工作正常。我看过the docs,看不出我做错了什么。有人可以告诉我吗?

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

+1

请使用

rickz

回答

2

对于属性指令,您不需要[],这将导致角度考虑SpDatePicker@Input propertydiv


正如评论说@Maximus,你仍然可以通过添加@Input() SpDatePicker到你的指令中使用[SpDatePicker]


Plunker demo(对于两种)

+0

谢谢。我现在感到很蠢 - 我没有注意到他们没有在文档中使用[]作为实际元素。 – john

+1

@john'[]'通常被认为是**属性绑定**。 :-) – Pengyy

+1

@john,但是这种方式'

'是可能的,如果你在SpDatePicker中定义了一个名为'@Input()SpDatePicker'的输入,那么你尝试的将会工作 –