Angular 从服务器获取数据时初始化DOM的角度问题

Angular 从服务器获取数据时初始化DOM的角度问题,angular,Angular,我用的是11版。我从服务器获取数据,下面的html显示了一个div(如果有数据存在)和另一个div(如果没有数据存在)。数据是在ngOnInit()中采集的,这可以正常工作,但当数据存在时,“无数据”div会短暂出现,直到数据初始化后消失。解决这个问题的最好办法是什么 <div *ngIf="protocol" class="container"> //show the data </div> <div *ngIf=

我用的是11版。我从服务器获取数据,下面的html显示了一个div(如果有数据存在)和另一个div(如果没有数据存在)。数据是在
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));
}