angularバージョン9を使用しています.2つのコンポーネントがあります。1 で車種、型式、2 番目のコンポーネントを検索し、コンポーネント 1 で選択した車の詳細を読み込みます。コンポーネント 1 で選択した車の車の画像リンクをコンポーネント 2 に渡し、その画像をコンポーネント2.これはうまくいきます..
アプリケーションで別のページを参照し、再度コンポーネント 1 に移動して別の車を選択し、コンポーネント 2 に移動すると、以前に選択した車の画像が約 1 ~ 2 秒間表示され、その後新しい画像が表示されます。これは、ブラウザのキャッシュの問題のようです。新しいイメージの読み込みが完了するまで最初にローダー イメージを読み込んでから、新しく読み込んだイメージを表示しようとしましたが、うまくいきません。私が試したことは以下の通りです。
<img *ngIf="isLoading" [src]="loadingimage.png" />
<img [hidden]="isLoading" [src]="carModelImage" (load)="isLoading = false"/>
私が気付いたのは、コンポーネント 2 が開かれた瞬間(load)
にタグのイベントがimg
発生し、新しいものが読み込まれるのを待たなくても isLoading 値が false に変更されるcarModelImage
ため、前の画像がしばらく表示されることです。
私のコンポーネントコードは以下のようになります。
@Component({
selector: 'app-request-summary',
templateUrl: './request-summary.component.html',
styleUrls: ['./request-summary.component.scss']
})
export class RequestSummaryComponent implements OnInit, OnDestroy {
public carModelImage: string = '';
public isLoading: boolean = true;
constructor() {
this.carModelImage = '';
this.isLoading = true;
}
ngOnInit() {
this.requestSummaryService.carData
.pipe(takeUntil(this.ngUnsubscribe))
.subscribe((data) => {
this.carModelImage = data[0].carModelImage ? data[0].carModelImage
:'http://nocarimage.png';
}
}
ngOnDestroy() {
this.isLoading = true;
this.carModelImage = '';
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}
}
私はかなり長い間、この問題のために苦労しています。どんな助けでも大歓迎です。