2016-06-27 5 views
0

Ich habe eine benutzerdefinierte Komponente „Superfeld“Angular2, wie ich Attribute von Eltern auf das Kind passieren kann

<div> 
    <input name="super" /> 
    <input name="field" /> 
</div> 

so genannt wird:

<super-component [disabled]="true" [superDirective]="control"></super-component> 

und ich möchte passieren benutzerdefinierte & Standardattribut Richtlinien von Eltern zu Kind, ohne sie explizit zu definieren, und diese Anweisungen sollten vom Host (im DOM) entfernt werden:

<div> 
    <input name="super" [disabled]="true" [superDirective]="control" /> 
    <input name="field" [disabled]="true" [superDirective]="control" /> 
</div> 

, so kann ich jedes NG2 Attribut Direktive übergeben, ohne sie in der ts-Datei definieren, wie:

@Input() disabled: boolean; 
@Input() superDirective: any; 

Kann ich das tun? Und wenn ja, wie?

+0

Was meinen Sie mit "ohne explizite Definition"? –

Antwort

0

Ich bin nicht in der Lage, herauszufinden, warum Sie dies gegen Angulars grundlegende Funktion tun wollen, um Komponenten unabhängig zu halten. Dadurch wäre es eng gekoppelt.

Einen Dienst defilieren und Wertobjekte für Ihre beiden Anweisungen beibehalten. Legen Sie beide in der übergeordneten Klasse fest und greifen Sie später auf die untergeordnete Klasse zu.

valObjCls 
{ 
disabled:boolean; 
superDirective:any; 
} 

ParentClass{ 

constructor(VO:valObjCls){} 
VO.disabled = false; 
VO.superDirective = 'parentControl'; 
} 

ChildClass{ 
constructor(VO:valObjCls) 
console.log(VO.disabled); 
console.log(VO.superDirective); 
} 
+0

Danke für die Antwort, ja du hast Recht. –

Verwandte Themen