【发布时间】:2021-01-31 11:51:35
【问题描述】:
我对 Angular 很陌生。我已经完成了服务和模板,我开始做组件了。我正在尝试从休息服务中分配值(模板)列表。如果用户是管理员,他可以看到所有这些,并且它可以工作。如果用户不是管理员,他只能看到自己的,但我无法让订阅者存储用户的个人资料。 当我尝试分配它时,它不会这样做。我读过这是因为订阅者是异步方法,但我真的找不到解决方案。如何将服务器中的值分配给变量,以便在视图中呈现它?
组件
@Component({
selector: 'app-plantilla',
templateUrl: './plantilla.component.html',
styles: [
]
})
export class PlantillaComponent implements OnInit {
public titulo = 'Colección de plantillas';
public plantillas: Plantilla[] = [];
public perfil: Perfil = new Perfil();
constructor(private plantillaServicio: PlantillaService, private authService: AuthService, private perfilServicio: PerfilService) { }
ngOnInit(): void {
if (this.authService.isAuthenticated()) {
console.log(this.authService.usuario);
if (this.authService.usuario.rol.id===1 ) {
console.log("al if");
//this works
this.plantillaServicio.listar().subscribe(plantillas =>
this.plantillas = plantillas);
}else{
console.log("al else");
//this works
console.log(this.perfilServicio.ver(this.authService.usuario.id).subscribe(val => console.log(val)));
//this doesn't work
this.perfilServicio.ver(this.authService.usuario.id).subscribe((val:Perfil)=>this.perfil=val);
//show empty class
console.log(this.perfil);
}
} else {
console.log("No autenticado");
}
}
}
查看
<div
class="card container"
*ngFor="let plantilla of plantillas"
>
<div class="row g-0">
<div class="col-md-6">
<h3 class="card-title">
{{plantilla.id}} - {{plantilla.empresa.nombre}} - {{plantilla.empresa.id}}
</h3>
</div>
<div class="col-md-12">
<!-- <div class="card-header">{{plantilla.asunto}}</div> -->
<div class="card-body text-dark bg-light mb-3">
<h5 class="card-title">{{plantilla.asunto}}</h5>
<p
class="card-text"
[innerHTML]=plantilla.texto
></p>
</div>
</div>
</div>
</div>
我也在*ngIf="plantillas?.length>0" 视图中尝试过,但控制台显示模板可以未定义。
【问题讨论】:
标签: angular observable angular2-observables