2016-03-11 120 views
0

我想做一些@Component工廠,我調用一個返回組件的函數。我想將widgetName傳遞給構造函數或超級構造函數。如何將參數傳遞給構造函數?Angular2傳遞函數參數給構造函數

export function createCommonKendoComponent(selector: string, **widgetName**: string) { 
    @Component({ 
     selector: selector, 
     inputs: ['bound', 'role'], 
     bindings: [ElementRef] 
    }) 

    @View({ template: '<ng-content></ng-content>' }) 

    class CommonComponent extends KendoComponent { 
     constructor(elementRef) { 
      super(elementRef, **widgeteName**); 
     } 
    } 

    return CommonComponent; 
} 

回答

1

您將其作爲提供者添加到某處。由於函數沒有可用作提供者的類型,因此需要使用令牌。令牌可以是一個字符串或OpaqueToken

var token = new OpaqueToken('myfunction'); 
bootstrap(AppComponent, [ 
    provide(token, 
     {useValue: (selector: string, **widgetName**: string) => { 
      createCommonKendoComponent(selector, **widgetName**}})]); 
class CommonComponent extends KendoComponent { 
    constructor(elementRef:ElementRef, @Inject(token) private compFactory) { 
    } 
}