Ich importiere gerade eine Drittanbieterkomponente. Für meinen Anwendungsfall muss ich diese spezifische Komponentenvorlage überschreiben.
Da dies eine Komponente von Drittanbietern ist und über das npm-Paket importiert wird, möchte ich die Komponente nicht ändern, sodass ich sie nicht jedes Mal aktualisieren muss, wenn das Paket aktualisiert wird.
Gibt es eine Möglichkeit, die Vorlage einer anderen Komponente zu überschreiben?
Ich weiß, dass Sie <ng-content>
verwenden können, wenn Sie ein Element injizieren möchten. Aber hier ist nicht durchführbar.
Das html ist ungefähr so:
%Vor%Der Controller ist etwa so:
%Vor% Gibt es eine Möglichkeit, die Vorlage, die ich für <third-party-component>
haben möchte, anzugeben, ohne diese spezifische Deklaration zu bearbeiten? Oder erweitern Sie es nur?
Nachdem ich damit herumgespielt habe. Eine einfache Erweiterung wird für meinen Anwendungsfall funktionieren.
Grundsätzlich habe ich eine Klasse erstellt, die thirdPartyClass
erweitert.
Was passiert, ist, dass ich die Vorlage für thirdPartyClass
überschreibe, indem ich meinen eigenen Selektor erstelle und nur die Klasse importiere.
In etwa so:
%Vor%Hinweise :
thirdPartyClass
verwendet werden. thirdPartyClass
aktualisiert wird, die von der Vorlage abhängt, müssen Sie sie manuell aktualisieren. Sie können Reflect verwenden, um Metadaten der Komponente zu ändern. Hier ist das super einfache Beispiel :
%Vor% Stellen Sie nur sicher, dass Sie die Vorlage aktualisieren, bevor Sie in die übergeordnete Komponente einfügen. Überprüfen Sie auch auf welche Metadaten Sie zugreifen müssen, in Ihrem Fall DirectiveMetadata
.
Tags und Links angular typescript