Ich habe Schwierigkeiten, Kontextdaten an meine dynamisch erstellte eingebettete Ansicht zu übergeben.Angular - Festlegen des Kontexts mit createEmbeddedView
Hinweis: I Angular 2.4.7
Hier bin mit ist, was ich whant zu erreichen:
In meinem DialogPresetComponent(Dialog-Preset. Komponente.html):
Diese Ansicht der Komponente enthalten bereit eine Reihe von Vorlage in meinem Dialog Framework verwendet werden:
<template #presetInfo>
{{options.description}} // Note this binding ! Here is the problem
</template>
Noch in dieser Komponente, erhalte ich eine ref zu diesen Vorlagen wie folgt aus:
@ViewChild('presetInfo', { read: TemplateRef }) presetInfo: TemplateRef<any>;
Dann i speichern Diese templateRef in einem DialogService, damit ich später und von woanders auf sie zugreifen kann.
In DialogComponent(dialog.component.html):
<div class='c-header'>
</div>
<div class='c-body'>
<div #container></div>
</div>
<div class='c-footer'>
</div>
In DialogComponent(Dialog:
Hier wird die Vorlage meiner modal component.ts):
In meinem DialogComponent schnappen Sie sich einen Hinweis auf den Behälter wie folgt aus:
options: DialogOptions = { title: 'Dialog title' };
:
@ViewChild('container', {read: ViewContainerRef }) containerRef: ViewContainerRef;
ich auch Attribute definieren, die ich von meiner dynamicly Vorlage zugreifen möchten injiziert
Was versuche ich zu tun:
Ich versuche, die Vorlage #presetInfo im #container und mit Rahmen meines DialogComponent
So finaly zu setzen, ich spritze meine Vorlage in meiner Komponente ihm das Recht gibt, Kontext:
In meinem DialogComponent(dialog.component.ts):
// Where templateRef is the template previously defined in DialogPresetComponent
createEmbeddedView(templateRef: TemplateRef<any>) {
this.containerRef.createEmbeddedView(templateRef, this);
}
Das Problem aus der Tatsache, dass die Bindung {{}} options.description in meiner injizierten Vorlage nicht funktionieren, selbst wenn das Bestehen der richtigen Kontext ('this' in meinem Fall) über createEmbeddedView.
Das Framework sagen mir, dass Optionen nicht definiert ist.
Was fehlt mir hier?
Es gibt nicht viel Dokumentation über diese Dinge ‚Kontext‘, so dass ich denke, ich nicht, dass es der richtige Weg mache ....
Irgendwelche Anhaltspunkte oder Hinweise sind willkommen!
Danke!
Scheint du passierst 'this' als Kontext. Ist das beabsichtigt? –
Ja, das ist beabsichtigt, ich denke, dass das Übergeben von 'dies' alle meine Komponenten-Mitglieder innerhalb der mitgelieferten Vorlage verfügbar machen würde. Wie wenn meine Vorlage Teil der Komponentenansicht wäre ... – Clement