Angular 是否可以用修改后的指令替代默认角度指令

Angular 是否可以用修改后的指令替代默认角度指令,angular,typescript,angular-reactive-forms,Angular,Typescript,Angular Reactive Forms,Angular Name中有一个指令,用于跟踪页面上元素中选定的元素。在第76行,有一个用于(change)事件的主机绑定,该绑定将触发onChange例程。但是,在我的例子中,我不希望跟踪选择,而是跟踪整个列表。此指令使用[formControl]选择器,因此我的第一个想法(自然)是将其从元素中删除,但在这样做时,我发现元素与FormGroup验证完全分离(自然) 我确实希望它成为FormGroup的一部分,并根据集合验证和其他FormGroup活动接收状态,因此我尝试: 从SelectMul

Angular Name中有一个指令,用于跟踪页面上
元素中选定的
元素。在第76行,有一个用于
(change)
事件的主机绑定,该绑定将触发
onChange
例程。但是,在我的例子中,我不希望跟踪选择,而是跟踪整个列表。此指令使用
[formControl]
选择器,因此我的第一个想法(自然)是将其从元素中删除,但在这样做时,我发现元素与
FormGroup
验证完全分离(自然)

我确实希望它成为
FormGroup
的一部分,并根据集合验证和其他
FormGroup
活动接收状态,因此我尝试:

  • SelectMultipleControlValueAccessor
    创建派生指令,但它似乎不喜欢这样,因为它以错误响应:“错误:多个内置值访问器与未指定名称的表单控件匹配”
  • 也许我可以删除
    @指令
    ,然后将提供程序应用到使用
    的组件<代码>{provide:selectmultiplectrolvalueaccessor,useClass:myClass,multi:true}但这没有任何效果,因为原始指令仍然适用

  • 在这种情况下,如何覆盖默认指令行为?

    控件需要是
    FormGroup
    的一部分,并且
    FormGroup
    必须在
    的祖先中的某个地方引用。必须从HTML元素中删除
    [formControl]
    formControlName
    属性。这将导致完全删除指令,其中一个指令应用css类。这将使您能够定义切换和应用Angular css类的逻辑,也就是说,如果您已经为这些类名定义了任何样式的话。这可以在您的代码中轻松完成,而
    [class]
    绑定可以应用这些类

    控件仍与
    表单组关联,并将参与所有活动,包括任何定义的验证。您可以使用控件上的
    setValue
    来更改其值,显然您需要负责维护有效值。在我的例子中,我有一个对象数组和一堆通过循环生成的
    option
    元素。我还有一个
    [selected]
    绑定到我的数据对象,因此如果您这样做,那么您还可以通过查询已选定数据对象的控制值来跟踪选择