Estoy trabajando en Angular WebApi. Tengo una respuesta de base de datos en localhost en formato JSON. Cuando ejecuto mi aplicación, puedo ver la matriz oData . Pero cuando vuelvo a cargar la página, oData se vuelve indefinido.
¿Como puedo resolver esto?
Aquí está mi código del archivo .ts:
ngOnInit(): void { this.mydataser.getDbData().subscribe(data => { this.oData = data; }); } public importData() { console.log(this.oData) }Aquí está mi servicio:
getDbData(): Observable<DataFactory[]> { return this.http.get<DataFactory[]>("https://localhost:44216/api/dbdata"); }PD Traté de usar localstorage pero no funciona.
Declarar los datos como una matriz vacía; si no lo hace, no estará definido hasta que se complete la respuesta de la API. Si desea saber cuándo llegará realmente la respuesta, simplemente toque . Entonces, si desea llamar a importData() después de recibir la respuesta de la API, llame al método this.importData() dentro de subscribe como
// declare as empty array oData = []; buttonEnabled = false; ngOnInit(): void { this.mydataser.getDbData().pipe( tap(d => this.buttonEnabled = true) ).subscribe(data => { this.oData = data; }); } importData(): void{ console.log(this.o.Data); }En plantilla:
<button [disabled]="!buttonEnabled">Import</button>