2016-12-21 40 views
0

我有一個服務:傳遞從服務的值到組件(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; 
    } 
} 

現在,在我的組件:

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

我應該怎麼做才能this.status能訪問並打印在組件中?我在這裏做錯了什麼?

回答

0
@Inject()  
export class MyService{ 

應該

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

應該

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

如果這沒有幫助我認爲MyService.status被一些異步調用設置,而不是但在時可用執行。

+0

未捕獲(承諾):錯誤:沒有字符串的提供者! 錯誤:無字符串提供程序! at NoProviderError.BaseError [as constructor] –

+0

但這不是由你的問題中的代碼造成的。我在前面的問題中已經解釋過,你不能注入類型爲'string'(或'boolean','number','Object')的類的實例。對於這些你實際上需要'@Inject('somename')'和匹配的提供者。 –

0

下面嘗試,

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

希望這有助於!

相關問題