Búsqueda de sitios web

typescript - El tipo 'string | undefined' no se puede asignar al tipo 'string' en la plantilla de Angular 12


Tengo una interfaz con pocas propiedades opcionales

export interface NavigationItem {
  id: string;
  title: string;
  classes?: string;
  badge?: {
    title?: string;
    translate?: string;
    bg?: string;
    fg?: string;
  };
}

En la plantilla, al pasar un valor a las propiedades de entrada

<span *ngIf="item?.badge" [ngStyle]="{'background-color': item?.badge?.bg,'color': item?.badge?.fg}"
          [translate]="item?.badge?.translate"
          class="nav-link-badge">
            {{item?.badge?.title}}
        </span>

Está dando error

Type 'string | undefined' is not assignable to type 'string'

Respuesta #1

Intenta asignar una cadena vacía '' si item?.badge?.bg o item?.badge?.fg son indefinidos. Por ejemplo, item?.badge?.bg || ''

También puedes cambiar '' a algún valor predeterminado que desees. por ejemplo, item?.badge?.bg || 'black'

Tal vez necesites hacerlo también para item?.badge?.translate.

<span *ngIf="item?.badge" [ngStyle]="{'background-color': item?.badge?.bg || '', 'color': item?.badge?.fg || '' }"
          [translate]="item?.badge?.translate"
          class="nav-link-badge">
            {{item?.badge?.title}}
</span>