Ссылка на родительский элемент в дочерней директиве

#angular #components

#angular #Компоненты

Вопрос:

Как получить родительскую ссылку в дочерней директиве Angular 2.?

 export class ParentComponent<W, T> {
public tags: Array<any>;
public model: T = <T>{};
public widget: W;
protected outputs: Array<string>;
protected twoways: Array<string>;

constructor(protected name: string, protected el: ElementRef, protected cdRef: ChangeDetectorRef) {        
}
}

export function CreateComponent(name: string, componentArgs: {
selector: string,
inputs: Array<string>,
outputs: Array<string>,
directives?: any, 
template: string,
changeDetection?: any,
queries: {
    [key: string]: any
}
}, args): Type<any> {
componentArgs.changeDetection = ChangeDetectionStrategy.OnPush;  

var comp = Component(componentArgs);
return comp.Class({
    extends: ParentComponent,
    constructor: [ElementRef, ChangeDetectorRef, function (el: ElementRef, cdRef: ChangeDetectorRef) {
        this.tags = args.tags;
        this.outputs = componentArgs.outputs;
        this.twoways = args.twoways;
        ParentComponent.call(this, name, el, cdRef);
    }]
})
}


 @Directive({
selector: '[j-template]'     
})


export class JTemplateDirective{   
@Input() widget; 
private childViews : any = [];
constructor(protected el: ElementRef, protected viewContainerRef: ViewContainerRef,
    protected templateRef: TemplateRef<any>, @Host() @Inject(forwardRef(() => EJComponents)) display: EJComponents<any, any>) {

}

ngOnInit(){
}

ngAfterViewInit(){
}
}
  

В приведенной выше j-template директиве, как я могу получить ParentComponet ссылку и получить доступ к свойствам.?

Комментарии:

1. Когда вы определяете переменную в родительской директиве, а затем передаете переменную дочернему элементу в качестве входных данных, дочерний элемент может обновить переменную, и родительский элемент получит изменения. Это то, что вам нужно?

2. Да, но я являюсь компонентом, и создание дочернего элемента происходит динамично, как показано в приведенном выше фрагменте кода. Метод createComponent() является универсальным, всякий раз, когда мне нужен пользовательский компонент, я могу создать его, передав необходимые аргументы в класс Component.