对于一个附带项目,我做了一个 ControlValueAccessor 的新实现(一个矩阵选择 AKA:一个可以选择和取消选择单元格的表格)。可以提供选项输入来更改矩阵响应用户交互的行为方式。
我正在尝试创建一个“示例”页面来列出具有各种选项集的几个矩阵选择控件(有点像这样:https ://material.angular.io/components/datepicker/overview )。对于每个示例,我想展示随着用户与控件和选项 json 交互而更新的绑定值 json。
这很简单,但重复(我有比下面提供的更多变化):
<h1>Matrix Selection Component</h1>
<h2>Basic</h2>
<app-matrix-selection [formControl]="peopleAttributesControl"></app-matrix-selection>
<h3>Json</h3>
<pre>{{data|json}}</pre>
<h3>Options</h3>
<pre>{{options||json}}</pre>
<h2>With Labels</h2>
<app-matrix-selection [formControl]="peopleAttributesControl" [keys]="people" [selectables]="subjects" firstCellValue="Students / Subjects"></app-matrix-selection>
<h3>Json</h3>
<pre>{{data|json}}</pre>
<h3>Options</h3>
<pre>{{options||json}}</pre>
...
请注意,对于每个示例,我都必须输出 json 和 options 值。
在我的脑海中(可能是错误的),我想做的是:
<h1>Matrix Selection Component</h1>
<h2>Basic</h2>
<app-example>
<app-matrix-selection [formControl]="peopleAttributesControl"></app-matrix-selection>
</app-example>
<h2>With Labels</h2>
<app-example>
<app-matrix-selection [formControl]="peopleAttributesControl" [keys]="people" [selectables]="subjects" firstCellValue="Students / Subjects"></app-matrix-selection>
</app-example>
...
并以这样的方式定义 AppExampleComponent ,它可以输出传入的任何组件的数据和选项(不仅仅是选择矩阵,还有我可能用所述属性定义的任何其他内容)。
我正在努力寻找任何资源来帮助我实现这一目标,我认为这可能是因为我很难说出我想要实现的目标。我希望一个组件包装另一个组件,以便它可以向我展示与该组件交互的效果。
我想其他实现方式是选项1:
<h1>Matrix Selection Component</h1>
<h2>Basic</h2>
<app-matrix-selection [formControl]="peopleAttributesControl"></app-matrix-selection>
<app-example [data]="peopleAttributes"></app-example>
<h2>With Labels</h2>
<app-matrix-selection [formControl]="peopleAttributesControl" [keys]="people" [selectables]="subjects" firstCellValue="Students / Subjects"></app-matrix-selection>
<app-example [data]="peopleAttributes" [options]="withLabelsOptions"></app-example>
...
或选项 2:
<h1>Matrix Selection Component</h1>
<app-matrix-selection-example title="Basic" [data]="peopleAttributes"></app-matrix-selection-example>
<app-matrix-selection-example title = "With Labels" [data]="peopleAttributes" [keys]="people" [selectables]="subjects" firstCellValue="Students / Subjects" [data]="peopleAttributes" [options]="withLabelOptions"></app-matrix-selection>
...
但我真的不想为我创建的每个未来 ControlValueAccessor 创建一个示例组件。
我觉得这里缺少一个关键的 Angular 功能。如果没有,您将如何处理?