我知道这有点晚了,但是即使从 Angular2 开始,我就一直专注于这个问题,最后我想出了一个很好的解决方法,让我拥有很好的适当组件 API,并且还能够访问私有字段从模板中使用适当的类型检查:
export interface MyComponentPrivateProperties {
_label: string;
}
export class MyComponent {
private _label: string = 'Label';
public get view(): MyComponentPrivateProperties {
return this as any;
}
}
<div>{{view._label}}</div>
通过这种方式,如您所见,我们甚至可以在 html 模板中进行类型检查以及我们需要的所有内容以及组件的适当 API。如果在另一个组件中我们MyComponent
像这样引用该类:
export class OtherComponent {
private _m: MyComponent;
ngOnInit() {
// here, this._label is not visible.
}
}
我们会注意到该属性_label
不可见。
当然,请注意该类MyComponent
不应实现接口MyComponentPrivateProperties
。此接口将没有实现。这只是对角度ngc
编译器的描述。它在编译时告诉编译器哪些是可以从模板访问的私有属性,然后在运行时消失。