Как исправить эту ошибку Невозможно вызвать выражение, тип которого не имеет подписи вызова - PullRequest
0 голосов
/ 08 октября 2018

Ошибка:

[ts] Cannot invoke an expression whose type lacks a call signature. Type 'DatabaseSnapshot<any>' has no compatible call signatures.
(parameter) item: AngularFireAction<DatabaseSnapshot<any>>

Служба потребления файлов :

**Error is at ...Item.payLoad().val()**
 constructor(private service: EmployeeService) { }
  ngOnInit() {
    this.service.getEmployees().subscribe(list => {
      let array = list.map(item => {
        return { $key: item.key, **...item.payload().val()** }
      })
    });
  }
**Method-II**
    getEmployees() {
        this.employeeList = this.db.list('employees');
        return this.employeeList.snapshotChanges();
      }

1 Ответ

0 голосов
/ 08 октября 2018

item.payload - это свойство, а не функция, как вы должны увидеть, если перейдете к его определению в вашей IDE:

export interface Action<T> {
  type: ListenEvent;
  payload: T;  // <---
};

export interface AngularFireAction<T> extends Action<T> {
  prevKey: string | null | undefined;
  key: string | null;
}

Поэтому вам следует использовать item.payloadне вызывая его: удалите скобки после item.payload.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...