Die Vorlage einer Drittanbieterkomponente überschreiben / erweitern

9

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?

    
Joel Almeida 26.01.2016, 16:19
quelle

2 Antworten

11

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 :

  • Wenn Sie diese Methode verwenden, vergessen Sie nicht, alle Pipes zu importieren, die in der Vorlage thirdPartyClass verwendet werden.
  • Wenn die Funktionalität in thirdPartyClass aktualisiert wird, die von der Vorlage abhängt, müssen Sie sie manuell aktualisieren.
  • Ich bevorzuge diese Lösung, um auf die ReflectMetaData zu verweisen, weil es eine einfache Erweiterung ist, anstatt auf die Anmerkungen zuzugreifen und sie zu ändern.
Joel Almeida 27.01.2016 10:59
quelle
2

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 .

    
Sasxa 26.01.2016 18:30
quelle

Tags und Links