Angular:如何将自定义指令注入组件

时间:2019-06-03 10:05:30

标签: angular typescript

我已经创建了一个我正在使用的指令,

<input (ifValid)="save()">Save</input>

我正在尝试将其注入到构造函数中。

@Component(...)
export class Comp {

    constructor(
        MyCustomDirective directive
    ) {}

}

但是,我收到一条错误消息,告诉我指令中没有任何提供程序。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  1. 您对指令的使用似乎不正确。放置寄生使它成为一个事件。就像点击事件一样。指令的使用方式类似于<input ifValid>Save</input>

  2. 您收到的错误是因为Angular不知道,您创建了一个新的自定义指令,称为ifValid。因此,您必须在Ngmodule中将angular表示为:

@NgModule({
  declarations: [IfValidDirective],

您可以了解有关指令here

的更多信息

我相信您仅在输入是有效文本的情况下才尝试保存用户输入。我认为这里不需要指令。 您可以尝试这样的事情:

<input type="button" (click)="save()">

//in your component
save() {
  // check if the input is valid or not  
}