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