У меня есть следующий кодУгловые 2 возвращаемые данные из функции стрелки
getEnquiryWithId(id: number) {
let enquiryStore = this.db.transaction('enquiries', 'readonly').objectStore('enquiries');
let index = enquiryStore.index('enquiries');
let request = index.get(id);
return request.onsuccess = (event) => {
return event.target.result;
}
}
, который я пытаюсь использовать в трубе
transform(value: number): string {
let request = this.dbStore.getEnquiryWithId(value);
let result = request();
}
Я получаю сообщение об ошибке сказав Cannot invoke an expression whose type lacks a call signature
.
Примечание: я не могу полагаться на объекты RxJs здесь, так как моя функция преобразования должна что-то возвращать, как ее труба. Как это сделать?
Что вы ожидаете от 'request()' делать? 'getEnquiryWithId' не возвращает ничего, что вы могли бы назвать. Вы можете, например, make 'getEnquiryWithId' return a Observable, что труба может затем' .map' и использовать дополнительный '| async', чтобы решить эту проблему. – jonrsharpe
Я хочу, чтобы 'event.target.result' был доступен в' transform' –
Я понимаю это, но неясно, почему вы считали, что вызов 'request()' будет делать это. Вы должны сделать это асинхронно - канал * может * вернуть наблюдаемый, вы просто положили, например. 'startPoint | myPipe | async' в шаблоне, чтобы решить эту проблему. Но 'getEnquiryWithId' должен будет вернуть наблюдаемое, или что-то, что вы можете превратить в одно. Сообщение об ошибке связано с тем, что оно ничего не возвращает, но вы все еще пытаетесь вызвать то, что оно возвращает. – jonrsharpe