Ignite UI for Angular代码配置单元格模板生效及类型问题咨询
问题解答
1. 为什么最初绑定bodyTemplate不生效
Ignite UI for Angular 在v13及后续版本对网格列的模板输入属性做了更名调整:
- 旧版本(v12及更早)对外开放的单元格模板输入属性为
bodyTemplate - 新版本已将对外公开的单元格模板输入属性统一修改为
cellTemplate,bodyTemplate被调整为组件内部私有属性,不再响应用户的外部绑定
因为Angular默认不会对未匹配的组件输入属性抛错,所以你运行时看不到报错,但模板自然不会被渲染。
2. 为什么cellTemplate不在IgxColumnComponent的类型定义中却能正常运行
有两个核心原因:
- 类型定义继承问题:
cellTemplate实际定义在IgxColumnComponent的父类IgxColumnBase/IgxColumnDirective中,部分版本的Ignite UI类型包没有将父类的输入属性正确合并到IgxColumnComponent的公开类型声明中,所以你用Partial<IgxColumnComponent>做类型注解时,TS检测不到这个属性的存在。 - 运行时和编译期的差异:TS的类型检查只在编译期生效,Angular的输入属性绑定是运行时逻辑,只要组件实际接收
cellTemplate这个输入,哪怕编译期类型提示不匹配,运行时也会正常生效。如果要消除TS类型报错,可以将columns的类型调整为Partial<IgxColumnComponent & {cellTemplate: TemplateRef<any>}>[]即可。
内容的提问来源于stack exchange,提问作者peterc
相关产品推荐
相关产品推荐

