2016-05-19 82 views
2

我有點困惑何時使用@optional和什麼時候使用? 對於@optional何時在typescript Angular 2中使用@Optional()和三元運算符?

import {Optional} from '@angular/core'; 
    log:string; 
    constructor(@Optional() private logger:Logger) { 
} 

對於三元運算符(:)

export class DataService { 
      private videos: string[] 

      getAllMovies(fetchFromService?: boolean): ng.IPromise<any> { 
       var self = this; 

       if (fetchFromService) { 
        return getMoviesFromService(); 
       } else { 
         return getVideosFromService(); 
        } 
       } 

回答

1

這意味着它們是由兩個完全不同的情況? 。

@Optional()裝飾器的意思是作爲注入與構造函數注入服務的註釋。這些服務將被標記爲可選項,如果服務無法解析或者在層次結構中找不到提供者,則不會拋出異常。

另一方面,三元運算符將方法參數標記爲可選。所以,你其實可以省略這些參數然後將默認爲null這樣的:

getAllMovies(true).then(...) 

getAllMovies().then(...) // parameter 'fetchFromService' defaults to null