为什么我的输入变量属性未定义(Angular)
我从应用组件中的服务中获取数据,然后通过@Input 将其传递给子组件。当我在 ngOnInit 中 console.log 数据时,它确实显示在子组件中,但是当我尝试将其传递给变量并在子模板中使用它时,它返回未定义,我不知道原因。
这是我在 app.component.ts 中调用我的服务的地方,有问题的数据是 this.colorcounts。ngOnInit 内部的控制台日志记录确实显示了正确的数据。colorCounts 有 3 个属性:红色、黄色和绿色:
ngOnInit() {
this.pciService.getPciInfo()
.subscribe((pciInfo) => {
this.spinner.hide();
this.pciData = pciInfo.sorted,
this.colorCounts = pciInfo.counts;
});
这是我传递数据的 app.component.html 模板:
<app-navbar *ngIf="colorCounts" [colorCounts] = "colorCounts"></app-navbar>
<app-system-status [pciData]="pciData"></app-system-status>
这是我抓取数据的子组件,在 ngOnInit 中执行 console.log 确实有效,但尝试在模板中使用“红色”或将其保存在类中时返回未定义:
constructor(private pciService: PciService,
public dialog: MatDialog,
private decimalPipe: DecimalPipe) { }
AMVersion: any;
@Input() colorCounts: Colors;
openDialog(): void {
let dialogRef = this.dialog.open(AmVersionDialogComponent, {
panelClass: 'custom-dialog-container',
data: {}
});
(<AmVersionDialogComponent>dialogRef.componentInstance).AMVersion = this.AMVersion;
dialogRef.afterClosed().subscribe(result => {
console.log('The dialog was closed');
});
}
ngOnInit() {
this.pciService.getAMVersion()
.subscribe((AMInfo) => {
return this.AMVersion = AMInfo;
});
var red = this.colorCounts.red;
console.log(red)
console.log(this.colorCounts);
}
}
我知道我可能遗漏了有关生命周期的一些简单信息。有人能给我指出正确的方向吗?
所有可观察到的物体都是异步的,因此在模板中
*ngif
条件将检查变量,如果null为null,则将返回null,但是如果您将变量作为
| |异步
它将一直检查此变量,并且何时将变量不为空,它将显示内容
ngif
。
*ngif
ngif
只有一次 !!!他没有等待Anny HTTP的电话,可观察到的是一个通常的人。如果要
*ngif
等待电话,则需要使用
| async
内部的管道。
与您在
ngoninit()
中订阅并分配给模板中的变量。在屏幕上模板Allredy之后,订阅将稍后分配这些值。 阅读有关异步的含义。
您需要知道这是一个沸腾:
9718888119
最好这样做是这样做的:
347433477
在模板中:
483002664
PIPE ASYNC将为您订阅以观察到。