gpt4 book ai didi

javascript - Angular 2 typescript 调用函数

转载 作者:行者123 更新时间:2023-12-03 05:48:14 26 4
gpt4 key购买 nike

请检查以下代码。我正在使用 typescript 第一次处理由“Angular2 CLI”生成的 angular 2。我在匿名函数内调用类函数时遇到了问题。

例如,我想在 showDialog() 中调用 readFile() 函数

我在想什么!错了~

对不起我的英语。

import {Injectable} from '@angular/core';
import {Observable} from "rxjs";
import "rxjs/Rx";

@Injectable()
export class SelectFileService {

ImageExtensions: string[] = ['jpg', 'jpeg', 'png', 'gif'];

constructor() {
}


public showDialog(): Observable<string[]> {
return Observable.create((observer) => {
dialog.showOpenDialog({
properties: ['multiSelections'],
filters: [
{name: 'Images', extensions: this.ImageExtensions}
]
}, function (fileNames) {
if (fileNames === undefined) {
observer.error("ERROR");
return;
} else {
observer.next(fileNames);
observer.complete();
//Tried Below and not working
// this.readFile(fileNames[0]);
// Also tried java type
// SelectFileService.readFile(fileNames[0]);
}
});
});
}

public readFile(filePath: string): Observable<string> {
return Observable.create((observer) => {
fs.readFile(filePath, 'utf-8', function (err, data) {
if (err) {
observer.error(err.message);
}
observer.next(data);
observer.complete();
});
});

}
}

在组件中:

this.selectfileservice.showDialog().subscribe(x => console.log(x))

最佳答案

您的函数表达式不保留封闭的 this。使用箭头函数代替:

 return Observable.create((observer) => {
dialog.showOpenDialog({
properties: ['multiSelections'],
filters: [
{name: 'Images', extensions: this.ImageExtensions}
]
}, (fileNames) => { // <---- here ----
if (fileNames === undefined) {
observer.error("ERROR");

关于javascript - Angular 2 typescript 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40246610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com