在我使用的Angular 2 / Ionic 2(final / rc0)项目的组件中,我正在使用:
protected contentTarget: ViewContainerRef;
ngOnInit() {
this.contentTarget.createComponent(componentFactory);
}
AoT Compiler说:
Error at ....: Property 'contentTarget' is protected and only accessible within class 'IncludeTemplateComponent' and its subclasses.
整个项目中的其他任何地方都不使用变量(属性)。
所以......任何人都可以对此有所了解,是createComponent工厂将contentTarget变量传递给它的子节点,或者为什么编译器不喜欢这里受保护?现在所有Angular2中的受保护变量都是“被禁止的”吗?
答案 0 :(得分:11)
来自here
对于给定组件,访问其所有成员(方法,属性) 通过其模板必须在提前编译中公开 场景。这是因为模板变成了TS 类。生成的类和组件现在是2个单独的类 并且你不能访问跨类的私人成员。
我的看法是contentTarget
被模板引擎使用,因此必须公开让AOT工作。