我有一个常量文件 constants.ts :
export const C0NST = "constant";
我在服务 some.service.ts 中访问它,如下所示:
import { C0NST } from './constants';
console.log(C0NST); // "constant"
但是,当我在组件模板中访问它时:
some.component.ts :
import { C0NST } from './constants';
some.component.html :
{{ C0NST }} <!-- Outputs nothing -->
但是在组件类中定义一个成员是有效的:
一些.component.ts
public const constant = C0NST;
some.component.html
{{ constant }} <!-- constant -->
我不明白为什么我能够直接在服务类中访问导入的常量,而不是在组件模板中,即使我在组件类中导入了它。
原文由 Karma 发布,翻译遵循 CC BY-SA 4.0 许可协议
在Angular2中,模板只能访问组件类的字段和方法。其他一切都是禁区。这包括对组件类可见的东西。
解决这个问题的方法是在组件内部有一个字段,它只引用常量,然后使用它。
这是设计的一个限制,但也许您应该更多地考虑一下为什么首先需要在模板中使用常量。通常这些东西是由组件本身或服务使用的,而不是模板。