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.
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:
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:
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.