2016-12-21 5 views
0

Ich habe einen Dienst:Passing einen Wert von einem Dienst zu einer Komponente (Angular2)

@Inject()  
export class MyService{ 
... 
    // this.status has a value which I can print in the console. 
    //Now let's write a function to call it from my component 

getGood(): any{ 
     return this.status; 
    } 
} 

nun in meiner Komponente:

export class MyComponent { 

    statusFromServer: number; 

    constructor(private router: Router, @Inject(UploadedFile) private _uploadedFile: UploadedFile){ 
    }  
    .....  
    handleUpload(): void { 

     this.statusFromServer = this._uploadedFile.getGood(); 
     console.log(this.statusFromServer); 
    }   
} 

Was soll ich this.status bekommen können tun zugegriffen werden und in der Komponente gedruckt werden? Was mache ich hier falsch?

Antwort

0
@Inject()  
export class MyService{ 

sollte

@Injectable()  
export class MyService{ 
constructor(private router: Router, @Inject(UploadedFile) private _uploadedFile: UploadedFile){ 

sollte

constructor(private router: Router, private _uploadedFile: UploadedFile){ 

sein, wenn dies nicht, dass ich nicht helfen, setze voraus, dass MyService.status durch einen asynchronen Aufruf gesetzt ist und nicht noch verfügbar, wenn this.statusFromServer = this._uploadedFile.getGood(); wird ausgeführt.

+0

Uncaught (in Versprechen): Fehler: Kein Anbieter für String! Fehler: Kein Provider für String! bei NoProviderError.BaseError [als Konstruktor] –

+0

Aber das ist nicht durch den Code in Ihrer Frage verursacht. Ich habe bereits in der vorherigen Frage erklärt, dass Sie keine Instanzen von Klassen einfügen können, die Parameter vom Typ 'string' (oder' boolean', 'number',' Object') haben. Für diese benötigen Sie eigentlich @Inject ('somename') 'und passende Provider. –

0

unter Versuchen,

get handleUpload(): void { 
    return this._uploadedFile.getGood(); 
} 

hoffe, das hilft !!

Verwandte Themen