![](/img/trans.png)
[英]Calling Typescript function from JavaScript file in Angular
[英]angular 2 typescript calling function
請檢查以下代碼。 我的工作angular 2
由“Angular2 CLI”第一次與打字稿生成。 我一直在匿名函數內部調用類函數時遇到問題。
例如我想在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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.