Конечная игра проста, мое приложение Angular получает и генерирует список записей данных в представлении с именем customers-list.component.html
, например:
Name: Olivia
Age: 23
Active: true
----------------
Name: Julia
Age: 22
Active: true
----------------
Name: Wes
Age: 23
Active: true
----------------
Name: Gabe
Age: 24
Active: false
Я хочу иметь возможность загрузить .csv
файл указанных записей данных.
В customers-list.component.ts
я попробовал эту функцию getcsvFile()
, определил данные, которые передаются через service.ts
, определил новую функцию Blob()
и использовал JSON.stringify(data)
и передал в getCustomersList()
данные и сохраните их как .csv
:
export class CustomersListComponent implements OnInit {
customers: Observable<Customer[]>;
constructor(private customerService: CustomerService) { }
......
getcsvFile() {
this.customers = this.customerService.getCustomersList();
let file = new Blob([JSON.stringify(this.customers)], { type: 'data:application/csv;charset=utf-8,content_encoded_as_url' });
saveAs(file, 'customerList.csv')
}
}
Вот сервис .ts:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class CustomerService {
private baseUrl = 'http://localhost:8000/customers';
constructor(private http: HttpClient) { }
.........
getCustomersList(): Observable<any> {
return this.http.get(`${this.baseUrl}/`);
}
}
но когда я загружаю CSV-файл и открываю его, я не вижу фактических данных, которые были введены, а скорее всей этой странной информации, которая все еще находится в формате json:
{
"_isScalar":false,
"source":{"_isScalar":false,
"source":{"_isScalar":false,
"source":{"_isScalar":true,
"value":{"url":"http://localhost:8000/customers/",
"body":null,"reportProgress":false,
"withCredentials":false,
"responseType":"json",
"method":"GET",
"headers":{"normalizedNames":{},
"lazyUpdate":null,"headers":{}},
"params":{"updates":null,
"cloneFrom":null,"encoder":{},
"map":null},
"urlWithParams":"http://localhost:8000/customers/"}},
"operator":{"concurrent":1}},
"operator":{}},
"operator":{}
}
когда я хочу увидеть что-то ближе к этому:
[
{"id": 2, "name": "Olivia", "age": 23, "active": true},
{"id": 3, "name": "Julia", "age": 22, "active": true},
{"id": 4, "name": "Wes", "age": 23, "active": true},
{"id": 5, "name": "Gabe", "age": 24, "active": false}
]
Чего мне не хватает?