假设我有一个服务,我需要它在我的组件中的结果。
<p>{{ foo.getit () }}</p>
...
constructor (private foo : MyFooService)
{
}
如果由于可访问性而为生产构建应用程序(ng-build-prod(,则这是一个错误。
声明foo为public或者用public方法包装它(如下所述(是更好的风格吗?
<p>{{ getFoo ().getit () }}</p>
...
constructor (private foo : MyFooService)
{
}
getFoo ()
{
return this.foo;
}
或者有更好的方法吗?
是的。
你应该把你的函数结果放在一个组件变量中,这样角度变化检测就不会用传递的调用来垃圾邮件foo.getit
或落入无限变化检测循环
<p>{{ getFooTit() }}</p>
...
constructor (private foo: MyFooService){}
fooTitResult
getFooTit()
{
if(!this.fooTitResult){
this.fooTitResult = this.foo.getit();
}
return this.fooTitResult;
}