Ich hatte so ein großes HTML-Menü, dass ich entschied, zu binden, in der Lage sein, mehrere Dropdown-Untermenü zu machen und HTML-Code-Duplizierung zu vermeiden. Eltern> Kind (auch Elternteil)> Kind ...Angular 2 innerHTML (klicken) Bindung
Für den Kontext: In ng2_msList/msList.components.ts wird ColumnsManagements.ts als this.ColumnsManagementInstance importiert. Das innerHTML- Menü wird korrekt angezeigt, in ng2_msList/pages/list.html:
<!-- COLUMNS DROPDOWN BUTTON -->
<ul [innerHTML]="msList.ColumnsManagementInstance.columnMenu" class="dropdown-menu" role="menu"> </ul>
Mit (in einer sehr vereinfachten Version meines Code): (Dank dieser Stack Q)
setHtmlColumnsMenu() {
var self = this;
var htmlcolumnsmenu = '';
[...]
htmlcolumnsmenu += this.createColumnsList(this.getNoneRelationalColumns(true));
// which return something like a lot of html content and sometime in it :
// <a href="javascript:;" (click)="msList.ColumnsManagementInstance.toogleColumn(column)">
[...]
return htmlcolumnsmenu;
}
ABER (click) = "msList.ColumnsManagementInstance.toogleColumn (column)" (zuvor im HTML-Inhalt) funktioniert nicht mehr. Es wird in der Ansicht als einfacher Text im Tag geschrieben (vor dem inneren HTML wurde es nicht angezeigt).
Ich kann nicht einen Weg, um es wieder funktioniert zu erreichen. Ich teste mehrere Möglichkeiten, um die Funktion aufzurufen oder wie ich in Web-Links wie auf der Ang Doc Section, here zum Beispiel gefunden habe. Diese Beispiele rufen eine Funktion auf, die sehr einfach in derselben Datei/demselben Kontext gesetzt wird (click) = "MyAction()", aber mit meinem Kontext kann ich keine Möglichkeit finden, sie richtig aufzurufen.
Die App-Architektur ist vielleicht nicht so wie Angular2 Click Call erwarten würde.
Was wir brauchen ist zu hören, nicht immer das, was wir wollen hören:/ Danke dir, es ist sicherlich was ich brauche, auch bedeutet es, dass ich falsch lag;) Akzeptiert! –