Привет, у меня есть похожая проблема, когда я могу регистрировать данные источника данных, но таблица данных не отображает данные.
Я создал массив Mock-Data в своем сервисе и передалэто вместо результата, который я получаю из своей базы данных.С Mock-Array это сработало, и я заполнил данные в моей таблице матов.
После того, как я зарегистрировал в базе данных результат и базу данных и Mock-Data, в консоли я заметил, что получаю объектс массивом из моей базы данных вместо просто массива.
Консоль браузера ->
MOCK-DATA: [{...}]
БАЗА ДАННЫХ: {[{...}]}
Если вы посмотрите внимательно, вы можете увидеть в DOM вашего браузера, источник данных установлен на [Object object], и я думаю, что есть проблема, потому что Mat-Table может 'т доступ к данным.
Я нашел обходной путь, где я передаю массив объекта вместо объекта, который немного грязный, но выполняет работу, пока не найду корень проблемы.
Вот мой сервис:
rfc.service.ts
@Injectable({
providedIn: 'root'
})
export class RfcService {
rfcsChanged = new Subject<Rfc[]>();
private dbSubs: Subscription[] = [];
<<MOCK-DATA>>
constructor(private http: HttpClient) { }
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
fetchRfcs() {...}
cancelSubscriptions() {
this.dbSubs.forEach(sub => sub.unsubscribe());
}
После того, как я изменил свой код с:
fetchRfcs() {
this.dbSubs.push(
this.http.get<Rfc[]>('http://localhost:3000/rfcs')
.subscribe((rfcs: Rfc[]) => {
// console.log(this.MOCK_RFCS);
// console.log(rfcs);
this.rfcsChanged.next(rfcs);
})
);
}
на:
fetchRfcs() {
this.dbSubs.push(
this.http.get<Rfc[]>('http://localhost:3000/rfcs')
.subscribe((rfcs: Rfc[]) => {
// console.log(this.MOCK_RFCS);
// console.log(rfcs.rfcs);
this.rfcsChanged.next(rfcs.rfcs);
})
);
}
это сработало.
Я не знаю, почему мой массив ответов обернут в объект, но я рекомендую проверить ваш сервис и как онполучает данные.В данный момент я пытаюсь найти способ сопоставить свой ответ с бэкэндом, чтобы он не был обернут внутри объекта.
Как вы извлекаете данные в своем сервисе?