在构建角度应用程序时出错

时间:2019-12-26 06:17:51

标签: angular compiler-errors angular8

在构建角度项目时出现一些编译错误,错误如下所示。

错误:

list.component.html(155,47): Property 'auth' is private and only accessible within class 'ListComponent'.

我在下面解释我的代码。

<td mat-cell *matCellDef="let element; let i = index;">
    <mat-icon *ngIf="auth.currentUserValue.RoleName === 'admin'" (click)="editStore(element)" class="text-primary"
        style="cursor: pointer">edit</mat-icon>
    &nbsp;
    <mat-icon *ngIf="auth.currentUserValue.RoleName === 'admin'" (click)="deleteStore(element)" class="text-danger"
        style="cursor: pointer">delete_forever
    </mat-icon>
</td>
import { AuthenticationService } from 'src/app/_services';
constructor(private auth : AuthenticationService) {}

我需要清除此错误。

1 个答案:

答案 0 :(得分:1)

AuthenticationService被标记为private。这意味着无法在其包含的类之外对其进行访问。是组件而不是模板。

解决方案1 ​​

AuthenticationService标记为公开。

constructor(public auth : AuthenticationService) {}

这将使您的template可以访问它。

解决方案2

建议不要直接从模板访问服务或服务上的属性。而是在组件上创建引用。

import { AuthenticationService } from 'src/app/_services';

@Component({})
export class MyComponent {
  currentUserRoleName = this.auth.currentUserValue.RoleName;
  constructor(private auth : AuthenticationService) {}
}

您的模板:

<td mat-cell *matCellDef="let element; let i = index;">
    <mat-icon *ngIf="currentUserRoleName === 'admin'" (click)="editStore(element)" class="text-primary"
        style="cursor: pointer">
        edit</mat-icon>
    &nbsp;
    <mat-icon *ngIf="currentUserRoleName === 'admin'" (click)="deleteStore(element)" class="text-danger"
        style="cursor: pointer">delete_forever
    </mat-icon>
</td>