Html 财产';认证服务';是私有的,只能在类内访问';AdminComponent';

Html 财产';认证服务';是私有的,只能在类内访问';AdminComponent';,html,angular,firebase,deployment,angular-material,Html,Angular,Firebase,Deployment,Angular Material,我试图部署am angular项目,但我一直从这个类中得到这个错误 <div class="page-content"> <app-breadcrumb [breadcrumbs]="breadcrumbs"></app-breadcrumb> <mat-toolbar class="toolbar-header"> <mat-toolbar-row&

我试图部署am angular项目,但我一直从这个类中得到这个错误

<div class="page-content">
    <app-breadcrumb [breadcrumbs]="breadcrumbs"></app-breadcrumb>
    <mat-toolbar class="toolbar-header">
        <mat-toolbar-row>
            <span class="font-larger">Welcome {{authenticationService.getName()}}!</span>
            <span class="mat-toolbar-spacer"></span>
        </mat-toolbar-row>
    </mat-toolbar>
    <mat-grid-list cols="3" rowHeight="240px" class="app-admin-tiles">
        <mat-grid-tile *ngFor="let element of tools"
                       [colspan]="element.cols"
                       [rowspan]="element.rows"
        >
            <app-admin-tile
                [color]="element.color"
                [text]="element.text"
                [icon]="element.icon"
                [url]="element.url"
                style="width: 100%;"
            ></app-admin-tile>
        </mat-grid-tile>
    </mat-grid-list>
</div>


请将
authenticationService.getName()
分配给变量,并在模板中使用它

在ts中,例如:

ngOnInit() {
this.name = authenticationService.getName();
}
在模板中使用像
Welcome{{{name}}

根据我的评论进行扩展,在模板表达式或数据绑定中使用默认更改检测策略绑定函数不是一个好主意。而是在组件控制器中调用该函数,并将其结果绑定到模板中

试试下面的方法

控制器

导出类AppComponent实现OnInit{
名称:字符串;
构造函数(私有authenticationService:authenticationService){}
恩戈尼尼特(){

this.name=this.authenticationService.getName();//看起来你在.ts文件中有私人服务。你能共享你的.ts文件吗?在默认的CD策略中这不是一个好主意。每个CD周期都会触发该函数。@MichaelD谢谢你来看我,你介意告诉我这是怎么发生的吗..据我所知,该值将设置为onInit(),它将仅在组件生成的开始时调用。没错。
this.name
变量仅在组件初始化时设置一次。但是绑定
{{name}
是一个表达式。此表达式将在每个CD循环中求值。如果它是变量,则它不是问题。它确保模板呈现变量持有的当前值。如果是函数,与变量类似,它将在每个CD中解析。因此每个CD循环将触发函数。如果函数函数很小也不复杂。但是如果函数很复杂,那么它可能会影响性能。@MichaelD你建议我怎么做?