Ich versuche, eine Bibliothek von geteilten Angular-Komponenten für eine Reihe von verschiedenen Web-Projekten zu erstellen. Zusammen mit der Bibliothek für gemeinsam genutzte Komponenten versuche ich ein Webprojekt zu erstellen, das all diese Komponenten und Codebeispiele enthält und anzeigt, wie sie verwendet werden.Gibt es eine Möglichkeit, die HTML-Vorlage für eine Angular * -Komponente zu erhalten?
Wie auf eine ähnliche Frage im Zusammenhang von anderen Abfragen zu sehen ist, um in müssen in <pre>
oder <code>
Tags, bestimmte Aspekte dieser HTML-Schnipsel in einer Webseite HTML-Code angezeigt werden HTML-codierte Zeichen haben (dh >
>
sein muss , <
muss <
sein). Die Notwendigkeit, diese Änderungen manuell vom Quellcode aus vorzunehmen, kann ziemlich beschwerlich und mühsam sein.
Ich möchte einen Weg finden, in der Lage zu sein, die HTML-Vorlage für eine bestimmte Komponente zu lesen, die wenigen erforderlichen Text-Ersetzungen vorzunehmen und diesen Wert dann auf eine Eigenschaft festzulegen, die in der Ansicht angezeigt werden soll. Ich habe andere ähnliche SO-Fragen gesehen, die eine andere und unzureichende Antwort haben, wie this.
Wenn ich foo.component.ts
wie folgt:
import { Component } from '@angular/core';
@Component({
selector: 'foo',
template: `
<div class="foo">
<div class="content">
<ng-content select="[top-content]"></ng-content>
</div>
<div class="extra content">
<ng-content select="[bottom-content]"></ng-content>
</div>
</div>
`
})
export class FooComponent {}
ich ein display-foo.component.ts
mit etwas schaffen wollen, wie folgt:
import { Component } from '@angular/core';
import { FooComponent } from './foo.component';
@Component({
selector: 'display-foo',
template: `
<pre class="example-code">
<code>
{{encodedExampleHtml}}
</code>
</pre>
<foo>
<div top-content>TOP</div>
<div bottom-content>BOTTOM</div>
</foo>
`
})
export class DisplayFooComponent {
encodedExampleHtml: string;
constructor() {
this.encodedExampleHtml = new FooComponent().template.replace('<', '<').replace('>', '>');
}
}
Im Wesentlichen würde dies die Vorlage in der Benutzeroberfläche für die nächste Entwickler setzen um zu sehen und zu verstehen, wie man ein tatsächlich wiedergegebenes Element dieses Komponententyps verwendet und wie die Komponente aussehen würde, wenn sie in einer tatsächlichen Anwendung verwendet wird.
Der Teil der DisplayFooComponent
, die ich kann nicht herausfinden, wie zu arbeiten, ist diese Linie this.encodedExampleHtml = new FooComponent().template.replace('<', '<').replace('>', '>');
Nehmen Sie das als Pseudo-Code für das, was Ich mag tun würde, weil ein Angular Komponente Objekt keine Vorlage Eigenschaft hat und soweit ich sehen kann, Keine Eigenschaft, die die Vorlage für diese Komponente verfügbar macht.
Gibt es eine Möglichkeit, das Angular-Framework zu verwenden, um die HTML-Vorlage für eine Komponente zu erhalten? Erneut möchte ich nicht den interpolierten Inhalt mit Ausdrücken ersetzen, sondern die eigentliche Raw-HTML-Vorlage, die einem Element entweder durch die template
-Eigenschaft des Dekorators oder seine templateUrl
-Eigenschaft zugeordnet ist?
Verwenden Sie AOT? – yurzui
@ yurzui Ja, ich habe es auf – peinearydevelopment