Definición de datos iniciales e interfaz:
export interface IInitialData { version: { patch?: string; Version: string, build: number, }; } export const initialStateInitialData = { version: { build: 0, Version: '1', }, };Tengo los siguientes selectores en el archivo de selectores:
export const selectInitialDataFeature = createFeatureSelector<IInitialData>('initialData');` export const selectInitialData = createSelector( selectInitialDataFeature, initialData => { return initialData; }, ); export const selectInitialDataVersion = createSelector( selectInitialData, initialData => { return initialData.version.Version; }, );Accediendo al segundo desde el archivo del componente:
public version$ = this.store.select(selectInitialDataVersion);Y del archivo de plantilla:
[value]="version$ | async"Esto funciona bien.
Sin embargo, lo siguiente devuelve el error "Versión de variable no resuelta"
public initialData$ = this.store.select(selectInitialData); [value]="initialData$.version.Version | async"`¿Cómo accedo a la variable version.Version de esta manera?
<ng-container *ngIf="(initialData$ | async) as myInitialData"> <my-component [value]="myInitialData.version.Version"> </my-component> </ng-container> Está intentando acceder al valor de su Observable sin suscribirse, que en este caso, antes de usar la tubería async
O si no desea manejar eso en su plantilla html, puede hacerlo en su archivo .ts
ngOnInit() { this.store.select(selectInitialData).subscribe( (myData) => this.initialData = myData.version.Version; ); } < ... ... [value]="intialData">Debe usar la tubería asíncrona directamente después del observable, luego acceda a las propiedades:
[value]="(initialData$ | async).version.Version"