2016-04-16 14 views
9

Ich überlege, eine eckige 1.4-Anwendung in eckige 2 zu migrieren und frage mich, ob es möglich ist, die Vorlage von Komponenten zu überschreiben, wie wir es in angle1 mit $ provider.decorator (wie Can you override specific templates in AngularUI Bootstrap?) machen.Angular2: Wie überschreibt man die Komponentenvorlage?

Ich bin auf der Suche nach etwas wie TestComponentBuilder.overrideTemplate aber für ein Nicht-Test-Szenario. Hat Angular2 etwas Ähnliches?

+0

Sie meinen für die Wiederverwendung einer Komponente mit mehreren verschiedenen Vorlagen? –

+0

Sicher kannst du, siehe [Antwort] (http://stackoverflow.com/questions/36660376/angular2-web-vs-mobile-templateurl/36660838#36660838). – kemsky

+0

Vielen Dank, leider, die meisten der Komponenten, deren Vorlage, die ich überschreiben möchte, stammen aus Bibliotheken von Drittanbietern (d. H. Angular-ui). – rrecaredo

Antwort

6

Überprüfen Sie diese Antwort von stackoverflow Override/extend third-party component's template. Die Hauptidee ist, dass Sie Ihre eigene Komponente schreiben und Komponenten von Drittanbietern erweitern können.

import {component} from 'angular2/core'; 
import {thirdPartyClass} from 'example/example'; 

@Component({ 
    selector: 'my-selector', 
    template: '<div>my template</div>' 
}) 

export class MyOwnComponent extends thirdPartyClass { 
    constructor() { 
    super() 
    } 
} 

Aber es gibt Nachteile:

  1. Es wird noch ursprüngliche Komponente kompilieren.
  2. Wenn Sie diese Methode verwenden, vergessen Sie nicht, alle Rohre zu importieren, die in der ThirdPartyClass-Vorlage verwendet werden.
  3. Wenn die Funktionalität in der ThirdPartyClass aktualisiert wird, die auf der Vorlage abhängt, müssen Sie von Hand aktualisieren.

    Abonnieren Sie diese Github Issue für weitere Updates.

+0

Die Probleme behoben. – alexKhymenko

Verwandte Themen