如何处理Angular Dart模板中使用的通用类型化组件? 材料芯片

问题描述

我在使用itemRendere和材料芯片时遇到问题。我所拥有的是

<material-chips >
                <material-chip *ngFor="let chip of data"
                               [value]="chip"
                               [removable]="true"
                               [selectionModel]="dataSelectionModel"
                               [itemRenderer]="dataOptionRenderer"
                >
                </material-chip>
            </material-chips>

哪里

final SelectionModel<MyType> datasetSelectModel = SelectionModel<MyType>.multi();
List<MyType> get data=>dataSelectionModel.selectedValues.toList();
ItemRenderer<MyType> dataOptionRenderer= ...

对于类型安全性来说,一切都很好-选择模型和渲染器的通用类型完全相同。但这最终会导致错误

Expected a value of type '(dynamic) => String',but got one of type '(MyType) => String'

请注意,直接在material-chips标签上使用selectionModel和renderer会获得相同的结果-迫使我使用未键入的项目渲染器(这在两种情况下都会导致崩溃)

如何用角飞镖处理这种情况?

解决方法

您需要在组件上声明directiveTypes

@Component(
  directiveTypes: [
    Typed<MaterialChipsComponent<MyType>>()
  ],)