javascript - 无法使用 Angular Directive(指令)?

标签 javascript angular

1) 使用 angularCLI 创建了一个新指令。

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

@Directive({
  selector: '[scrollable]'
})
export class ScrollableDirective implements OnInit{

  constructor(public el:ElementRef) { }

  ngOnInit(){
    console.log('its working!')
  }

}

2) Angular CLI 自动将指令添加到 app.module 声明中

import { ScrollableDirective } from './scrollable/scrollable.directive';

@NgModule({
  declarations: [
    ...
    ScrollableDirective
  ],

3)尝试使用指令作为属性

<div class="menu-container" *ngIf="menuService.showMenu" [scrollable]>

4) 结果错误

Error: Uncaught (in promise): Error: Template parse errors:
Can't bind to 'scrollable' since it isn't a known property of 'div'.

我已阅读官方文档,我似乎正在做所有正确的事情。我不明白我可能错过了什么以及为什么不能使用该指令。

最佳答案

尝试添加不带 [] 绑定(bind)的 scrollable 指令:

<div class="menu-container" *ngIf="menuService.showMenu" scrollable>
如果您向指令传递一个值,但您没有在指令中使用任何 @Input 值,则

[] 会是这样,所以它不会需要。

docs使用绑定(bind)括号 [highlightColor]="'orange'" 因为它期望来自消费者的字符串值来指定颜色。仅当您需要将值传递给属性指令以便以某种方式使用时,才需要 @Input

@Kevin 是对的,错误是由于 @Input 未添加到指令配置中引起的,但在这种情况下您不需要它,因此请避免导入/导出该装饰器。

关于javascript - 无法使用 Angular Directive(指令)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45110734/

相关文章:

javascript - 由 d3 (d3.svg.arc) 创建的 SVG 路径元素在应用蒙版时消失

javascript - 在 Angular 5 中禁用 zone.js 后不会触发 ngOnInit

angular - 在 Angular 教程中获取 Cannot find name 'HEROES' 错误

javascript - 如何使用 jquery .when().apply() 一次从多个 promise 中获取已解析的数据

javascript - 如何在 Javascript (Smartface) 中创建透明按钮

javascript - 只能使 HTML 列表随机播放一次

javascript - 按嵌套属性对 JSONarray 进行排序

Angular CLI "Unknown option: ' --sourcemap'"错误

rest - 如何在不将其转换为字符串或 json 的情况下访问 Angular 2 http 响应主体?

angular - 类型 'map' 中缺少属性 'Observable<any[]>'