es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La propiedad de la tubería asincrónica Angular 12 no existe en el tipo string.

Tengo un observable tipado utilizando el modelo:

import { FishTypes, SelectedFish } from ...

export class Fish{
  fishTypes: FishTypes;
  selectedFish: SelectedFish;
  constructor() {
    this.fishTypes = new FishTypes;
    this.selectedFish = new SelectedFish;
  }
}

En mi plantilla, puedo usar este observable tipado para mostrar todos los datos actuales usando:

<ng-container *ngIf="(fishData$ | async) as fish">
  {{fish | json}}
</ng-container>

Lo que muestra:
{“fishTypes}: {…}, “selectedFish”: {…}.

Mi problema surge cuando intento mostrar:

<ng-container *ngIf="(fishData$ | async) as fish">
  {{fish.selectedFish}} o {{fish['selectedFish']}}
</ng-container>

Donde obtengo el error “La propiedad ‘selectedFish’ no existe en el tipo ‘string'”. Sé que solo me falta algo pequeño, pero no he sido capaz de resolverlo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error que está recibiendo se debe a que la propiedad “selectedFish” no está definida en la clase “Fish”, sino en la clase “SelectedFish”. Para mostrar la propiedad “selectedFish”, debe acceder a ella a través del objeto “fish” en la plantilla. Puede hacer esto utilizando la notación de punto, como se muestra a continuación:

    <ng-container *ngif="(fishData$ | async) as fish">
      {{fish.selectedFish.nombrePropiedad}}
    </ng-container>
    

    Reemplace “nombrePropiedad” por el nombre de la propiedad que desea mostrar. Alternativamente, también puede utilizar la notación de corchetes para acceder a la propiedad, como se muestra a continuación:

    <ng-container *ngif="(fishData$ | async) as fish">
      {{fish['selectedFish']['nombrePropiedad']}}
    </ng-container>
    

    Una vez más, reemplace “nombrePropiedad” por el nombre de la propiedad que desea mostrar. Esto debería resolver el error que está recibiendo y permitirle mostrar la propiedad “selectedFish” en su plantilla.

Comments are closed.