无法在angular5

时间:2018-12-26 11:15:38

标签: angular typescript

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

如果ts文件和html / template文件是分开的,那么如何在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中使用私有变量?

1 个答案:

答案 0 :(得分:0)

Angular中的AoT编译器要求您要在模板中使用公共成员时,必须在控制器类中具有公共成员。因为当<asp:TemplateField HeaderText="Status" ItemStyle-CssClass="text-center" HeaderStyle-CssClass="text-center"> <ItemTemplate> <asp:CheckBox ID="lblmajor" runat="server" Checked='<%# (bool)Eval("IsApproved")==true?true:false %>' ForeColor='<%# (bool)Eval("IsApproved")==true?System.Drawing.Color.Green:System.Drawing.Color.Red %>'> </asp:CheckBox> </ItemTemplate> </asp:TemplateField> 代码向下编译为public/private时,TypeScript概念不存在。

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

如果要封装控制器变量,但仍要访问或设置某些数据,则应创建相应的方法,例如getters / setters。