如何在角度视图中访问方法而不会导致多个调用?

时间:2018-10-19 13:38:41

标签: angular angular6 angular2-template angular-components

   <ng-container *ngFor="let child of root.getChildren()">
   <ng-container id="prefix" *ngIf="hasPrefix(child)">
   {{getPrefix(child)}}
   </ng-container>
   </ng-container>

我只是在学习角度。我没有太多的角度经验。如果我错了,请随时纠正我。

我有一个树数据结构,我必须遍历树并打印子节点的前缀。但是前缀是私有属性。在angular中访问视图组件中的私有属性的最佳实践是什么?上面的代码导致调用多个方法,因为在递归过程中将检测到更改。

谢谢。

2 个答案:

答案 0 :(得分:0)

理想情况下,您不应在控制器外部使用私有属性。如果要在视图中使用它们,可以将它们声明为公共。

答案 1 :(得分:0)

如果我对您的理解正确,则可以使用公共获取程序访问一些私有字段。没关系,这不是问题。是的,这会因为getter的调用而造成一些开销,但是您现在不必担心这一点。这样做的原因是DOM操作(这种操作也经常发生)的成本要高得多,并且此开销非常小。

这样的代码是可以的:

class MyController {
    private _model: object;
    public get name() {return this._model.name;}
}

如果您开始遇到性能问题,应该问的第一个问题是-我的DOM渲染的频率,而不是我的getter调用的频率。