#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.