【问题标题】:Not able to access private variables in template/html in angular5 [duplicate]无法在angular5中访问模板/ html中的私有变量[重复]
【发布时间】:2019-05-24 16:08:39
【问题描述】:

我创建了许多变量并在各自的模板/html 中访问它。默认情况下,所有变量都是公开的。这些公共变量是有问题的,所以我想将它们转换为私有变量。但是,一旦我将这些私有变量转换为公共变量,我就会收到无法在类外使用私有成员的错误。从概念上讲,这是绝对正确的。但是,在组件中,模板/html 和 *.ts 文件属于同一事物,如果我错了,请纠正我。那么,为什么我不能将 ts 文件中创建的私有变量用于对应的模板/html?

如果 ts 文件和 html/模板文件是分开的,那么我如何访问 html 中的私有变量?

我正在使用打字稿。

  1. 在 ts 文件中将公共变量转换为私有变量
  2. 在同一组件的 html 中使用私有变量

test.component.ts

public myVar = 'iCreatedThisVariable';

          to

private myVar = 'iCreatedThisVariable';

test.component.html

<p>{{myVar}}</p>

如果ts文件和html都属于同一个类,我应该可以在html中使用私有变量。

如果它们不同,那么如何使用 angular2+ 在 html 中使用私有变量?

【问题讨论】:

  • 当你说这些公共变量有问题时,你所说的有问题到底是什么意思。
  • 不,你不能。

标签: angular typescript


【解决方案1】:

当您想在模板中使用它们时,Angular 中的 AoT 编译器要求您在控制器类中拥有公共成员。因为当TypeScript 代码编译为ES5 时,public/private 概念不存在。

在进行组件组合和/或封装时应该使用访问修饰符,而不是在进行模板和控制器时。

如果你想封装控制器变量,但仍然想访问一些数据或设置它,你应该创建相应的方法,比如getter/setter。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2016-04-07
    • 2022-11-18
    • 2016-05-07
    • 2012-05-04
    • 2014-07-20
    • 1970-01-01
    相关资源
    最近更新 更多