В приведенном ниже фрагменте кода я использую сервис (Angular) для извлечения текста через fileReader, используя обещание для асинхронной части. Проблема, с которой я столкнулся, - это (я считаю) проблема сфер, и я в замешательстве. В моем компоненте я объявляю переменную экземпляра:
myDoc: docWrapperClass.
Обычно, когда программа чтения файлов извлекает текст, я хочу присвоить результаты этой локальной переменной. Все работает хорошо, пока я не попытаюсь выполнить задание. т.е .:
this.myDoc = docContents, когда обещание разрешается (в настоящее время комментарий закомментирован).
Когда оператор остается в компиляторе, он жалуется:
Тип '{}' нельзя назначить типу docWrapperClass: fileName.
В docWrapperClass есть свойство с именем fileName, но не уверен, что означает {}. Я закомментировал назначение, а затем поместил точку останова в оператор console.log в блоке then (). Когда я печатаю
«this» в консоли я получаю неопределенным, что ДЕЙСТВИТЕЛЬНО меня смущает. Я бы, по крайней мере, ожидал, что это будет работать. Мой вопрос заключается в том, как назначить docWrapperClass, возвращаемый из обещания, переменной экземпляра?
export class myDocComponent implements OnInit {
constructor(private fileReaderService: ReadLocalFileService,
private textExtractor: TextExtractorServiceService) { }
ngOnInit() { }
docWords: string[] = [];
myDoc: docWrapperClass = null;
selectFile(event: any) {
console.log("Debug");
this.fileReaderService.readFile(event.target.files)
.then((docContents) => {
console.log("DocContents: " + docContents);
//this.myDoc = docContents;
});
}
}