Angular 从服务器获取数据时初始化DOM的角度问题
我用的是11版。我从服务器获取数据,下面的html显示了一个div(如果有数据存在)和另一个div(如果没有数据存在)。数据是在Angular 从服务器获取数据时初始化DOM的角度问题,angular,Angular,我用的是11版。我从服务器获取数据,下面的html显示了一个div(如果有数据存在)和另一个div(如果没有数据存在)。数据是在ngOnInit()中采集的,这可以正常工作,但当数据存在时,“无数据”div会短暂出现,直到数据初始化后消失。解决这个问题的最好办法是什么 <div *ngIf="protocol" class="container"> //show the data </div> <div *ngIf=
ngOnInit()
中采集的,这可以正常工作,但当数据存在时,“无数据”div会短暂出现,直到数据初始化后消失。解决这个问题的最好办法是什么
<div *ngIf="protocol" class="container">
//show the data
</div>
<div *ngIf="!protocol" class="container">
//show an error message
</div>
您可以将
可观察的
直接传递到组件中,并使用异步管道
获取数据。这也带来了一个好处,即您不必担心取消订阅该可观察到的服务
如下所示(加载消息部分显然是可选的):
协议$:可观察;
ngOnInit():void{
这个.getProtocol();
}
getProtocol():void{
const protocolNumber:number=this.route.snapshot.paramMap.get(“protocolNumber”);
this.protocol$=this.dataGetService.getProtocol(protocolNumber);
}
//显示数据
//显示错误
//显示潜在的加载消息
谢谢,但是如果我输入了一个不存在的协议号,它不会显示错误。我刚刚在控制台中发现一个错误。这既不是代码的一部分,也不是问题的一部分。答案复制了您在示例中的逻辑。如果您想对收到的协议进行进一步验证,那么显然需要为此添加一些逻辑。
protocol: Protocol;
ngOnInit(): void {
this.getProtocol();
}
getProtocol(): void {
const protocolNumber: number = this.route.snapshot.paramMap.get("protocolNumber");
this.dataGetService.getProtocol(protocolNumber).subscribe(protocol => (this.protocol = protocol));
}