我正在构建一个运行Angular 6的复杂表单应用程序。此应用程序在单独的form-component
选择器上通过*ngFor
循环在表单本身(question-component
)中构建问题。 question-component
列出每种类型的表单输入(文本,日期选择器,单选框,复选框等)的HTML,并且根据从form-component
传入的问题类型,它将构建必要的HTML。问题组件实例的HTML元素。我正在将(change)
中question-component
的选择器标记上的form-component
事件处理一些重要的逻辑。
<section
*ngFor="let section of formData"
class="form-section"
[hidden]="section.hidden"
[id]="section.programmaticName">
<h1 id="{{section.programmaticName}}">{{section.displayName}}</h1>
<mat-divider></mat-divider>
<!-- Questions -->
<div class="question-container" *ngFor="let question of getSectionQuestions(section.programmaticName)">
<app-question
[question]="question"
[hidden]="question.hidden"
[form]="formData"
[id]="question.programmaticName"
(change)="dataChange($event)">
</app-question>
</div>
</section>
在我尝试将Material添加为我的UI之前,一切都工作正常。某些Material的表单元素不支持(change)
,而是需要它们自己的特定方法(例如,(selectionChange)
用于选择,(dateChange)
用于日期选择器)。不幸的是,那些与(change)
不兼容的元素显然不再能够检测到那些变化。
如果不处理问题级别的更改方法(每个问题类型可以具有自己的更改检测方法),我将如何解决呢?任何建议将不胜感激!