目前为止,我只能读取文档public
和private
作为TypeScript中的作用域。但是,当我尝试以下练习时,我会得到不同的结果,就好像变量environment
对标记不可见,除非声明(公开或私下)。正在显示感觉在Angular中有第三个作用域(除了公共和私有),但不存在
<div class="text-section">
Name is: {{environment.shazoo}}.
</div>
import { environment } from "../../../../environments/environment";
...
@Component({ ... })
export class DemoComponent implements OnInit {
constructor(private builder: FormBuilder) { ... }
...
private environment = environment;
}
在文本hazaa上面的例子的结果。但是,如果我注释将导入的环境实例分配给本地声明的行,则文本消失。
import { environment } from "../../../../environments/environment";
...
@Component({ ... })
export class DemoComponent implements OnInit {
constructor(private builder: FormBuilder) { ... }
...
// private environment = environment;
}
我图的方式,如果进口实例是在代码中可见,但不标记,还有第三级的范围界定,不管这可能是(某种secludedly私人啄的)。但我几乎认为事实并非如此。我错过了什么?
Angular对此很奇怪 - 私有变量通常在它们自己的组件的模板中不可用,但一些编译器允许它 - https://stackoverflow.com/questions/34574167/angular2-should-private-variables-be在模板中可以访问的AOT编译失败,但是我只是在plunkr上测试,而且plunkr可以引用模板中的私有变量就好了 – diopside
所以我认为在很多情况下,即使你的第一个例子也不会成功。但一般来说,模板必须在组件中有一些东西来为任何变量提供上下文。它并没有真正意识到它自己的类(组件)以外的任何typecript语句。 – diopside
转储类版本只是一个没有私人访问修饰符=>纯javascript的函数。在您的视图模板中,您可以绑定此字段并使用它。 – glenn