2016-03-11 2 views
0

Я пытаюсь создать какую-то фабрику @Component, где я вызываю функцию, возвращающую компонент. И я хочу передать widgetName в конструктор или в супер конструктор. Как передать аргумент конструктору?Параметр функции Angular2 pass для конструктора

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) { 
    } 
} 
Смежные вопросы