我有一个导入静态内容并在模板中使用它的问题的解决方案,但我不确定它是否正确,所以我想听听是否有官方/更好的方法。
这是一个例子,包括相关部分和我目前的解决方案。
constants.ts
export const ELEMENT_TYPES = { FIELD: {...}, GROUP: {...} ...};
component.ts
import {ELEMENT_TYPES} from "./constants";
@Component({
...
templateUrl:"./template.html"
})
export class myComponent{
public type = ELEMENT_TYPES.GROUP;
public get ELEMENT_TYPES() {
return ELEMENT_TYPES;
}
public isOfType(matchType){
return this.type === matchType;
}
...
}
template.html
<div *ngIf="isOfType(ELEMENT_TYPES.FIELD)">
...
</div>
当然,实际的实现类型是从另一个地方设置的(它是在通过输入向下发送的元数据对象中)
我关心的是使用与属性getter相同的名称作为导入的常量名称。但如果我不创建一个getter,我将无法访问模板中的常量。我想访问模板中与组件类中相同名称的常量ELEMENT_TYPES。
对于以这种方式导入的类,函数和变量,此问题是相同的。 (我们有静态库类(不是服务),例如有时需要从模板中使用)
当然,我对另一种看待问题的方式持开放态度,例如,有一种更好的方法来打包常量和类(我们没有以这种方式导入函数)来从中访问它们模板和组件类通过相同的名称。