【问题标题】:Attribute directive属性指令
【发布时间】:2017-12-30 18:31:53
【问题描述】:

无论出于何种原因,我都无法为这个问题选择任何 angular4 标签。我正在使用 Angular 4。

我已经创建了一个属性指令:

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

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

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

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

无法绑定到“SpDatePicker”,因为它不是“div”的已知属性。

用法:

<div [SpDatePicker]></div>

如果我将选择器声明更改为:

selector: '.spdatepicker'

并使用以下 HTML:

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

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

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

【问题讨论】:

  • 请使用

标签: angular angular-directive


【解决方案1】:

属性指令不需要[],这将导致角度考虑SpDatePicker 作为@Input property 的div。


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


Plunker demo(两者都适用)。

【讨论】:

  • 谢谢。我现在觉得很蠢——我没有注意到他们没有使用 [] 作为文档中的实际元素。
  • @john [] 通常被视为属性绑定。 :-)
  • @john,但是如果您在 SpDatePicker 中定义一个具有相同名称 @Input() SpDatePicker 的输入,那么这种方式 &lt;div [SpDatePicker]&gt;&lt;/div&gt; 是可能的,那么您尝试的将起作用
  • @Pengyy,您可以将我之前评论中的信息添加到您的答案中
  • @Maximus 是的,我忘记了这一点。感谢您指出这一点。
猜你喜欢
  • 1970-01-01
  • 2017-06-18
  • 2015-10-27
  • 2013-10-26
  • 1970-01-01
  • 2018-02-11
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多