2016-10-25 2 views
0

Bitte überprüfen Sie den folgenden Code. Ich arbeite an angular 2 generiert von "Angular2 CLI" erstmals mit dem Typoskript. und ich habe ein Problem auf Aufruf Klassenfunktion innerhalb anonymer Funktion.angular 2 typescript rufende Funktion

Für Beispiel möchte ich readFile() Funktion innerhalb showDialog()

nennen, was ich denke! falsch ~

Entschuldigung für mein Englisch.

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(); 
      }); 
     }); 

    } 
} 

In Komponente:

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

Antwort

1

Ihre Funktion Ausdruck erhalten nicht die umschließende this. Verwenden Sie stattdessen eine Pfeilfunktion:

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

Danke :). . . – Raj

Verwandte Themen