我有一个角度/离子应用程序,我提出服务器请求。 获取数据后,我的模型(img src)应将其默认值(assets / imgs / anyfile.jpg)更新为我的新值(server / new / image / path)
但是屏幕是在请求之后创建的,甚至在我不知道之前...
请求是在ngAfterViewInit上进行的。
应该在哪里调用我的updateImageFunction(),以便可以使用新值更新我的图像..?
任何帮助都会做人! THX
-
该应用程序加载了图像A和B,其路径来自Service.ts文件的静态属性(资产文件夹上的默认路径);
成为请求(ngAfterViewInit),我获取新路径并更新Service.ts属性;
由于屏幕已经加载,因此图像已经从服务获取其路径(默认为静态),并且所有这些之后都会进行更新。图像A和B未更新
我认为它的生命周期问题,但不知道如何解决它......
答案 0 :(得分:1)
如果您使用的是httpClient,则角度服务器请求是冷可观察对象。这意味着一旦http请求完成,订阅就会自动终止。
为了让您始终拥有最新数据并进行刷新,您需要做的是在导致更改的事件上,再次进行http调用以重新加载数据。
我无法给你一个具体的例子,因为你没有提供任何代码,但我希望这会有所帮助。
答案 1 :(得分:0)
对我来说,替换图像的最佳方法是使用 ngIf ,如下所示:
<img *ngIf="!imgOne" src="assets/placeholder.jpg" (click)="takePicture(1)"/>
<img *ngIf="imgOne" [src]="imgOne" (click)="openPicture(1)" />
通过这样做,无论何时替换 imgOne angular都会确保更改它。
应该在哪里调用我的updateImageFunction()
当然回应之后。对 DB 的调用可以在 ngAfterViewInit , ionViewDidEnter , ngOnInit ,甚至构造函数内。