在构建角度项目时出现一些编译错误,错误如下所示。
错误:
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>
<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) {}
我需要清除此错误。
答案 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>
<mat-icon *ngIf="currentUserRoleName === 'admin'" (click)="deleteStore(element)" class="text-danger"
style="cursor: pointer">delete_forever
</mat-icon>
</td>