Los siguientes códigos en Spartacus versión 2.0 funcionan bien. el archivo de plantilla:
<ng-container *ngIf="data$ | async as data"> <cx-media [container]="data.media" [title]="data | json"></cx-media> </ng-container>el archivo ts:
@Component({ selector: 'app-custom-banner', templateUrl: './custom-banner.component.html', }) export class CustomBannerComponent { data$: Observable<CmsBannerComponent> = this.componentData.data$; constructor(protected componentData: CmsComponentData<CmsBannerComponent>) {} }Pero no está compilando en Spartacus versión 4 y dando los siguientes errores.
Type 'CmsBannerComponentMedia | CmsResponsiveBannerComponentMedia | undefined' is not assignable to type 'MediaContainer'. Type 'undefined' is not assignable to type 'MediaContainer'.ngtsc(2322) Error: src/app/spartacus/features/custom-cms-components/custom-banner/custom-banner.component.html:3:14 - error TS2322: Type 'CmsBannerComponentMedia | CmsResponsiveBannerComponentMedia | undefined' is not assignable to type 'MediaContainer'. Type 'undefined' is not assignable to type 'MediaContainer'. 3 <cx-media [container]="data.media" [title]="data | json"></cx-media> ~~~~~~~~~ src/app/spartacus/features/custom-cms-components/custom-banner/custom-banner.component.ts:8:16 8 templateUrl: './custom-banner.component.html', ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Error occurs in the template of component CustomBannerComponent.Reproduje el problema y creé un ticket de error . Puede observarlo y actualizar su proyecto cuando esté listo y lanzado.
Por ahora, solo puedo sugerir soluciones feas como:
[container]="$any(data.media)" "angularCompilerOptions": { "strictTemplates": false }