2016-04-16 27 views
9

Sto considerando la migrazione di un'applicazione angolare 1.4 a angolare 2 e mi chiedo se sarà possibile sovrascrivere il modello dei componenti come facciamo in angular1 utilizzando $ provide.decorator (come Can you override specific templates in AngularUI Bootstrap?).Angular2: come sovrascrivere il modello di componenti?

Sto cercando qualcosa come TestComponentBuilder.overrideTemplate ma per uno scenario non di test. Angular2 ha qualcosa di simile?

+0

Intendi riutilizzare un componente con diversi modelli? –

+0

Certo che puoi, vedi [risposta] (http://stackoverflow.com/questions/36660376/angular2-web-vs-mobile-templateurl/36660838#36660838). – kemsky

+0

Grazie, Sfortunatamente, la maggior parte dei componenti dei componenti di cui vorrei sovrascrivere il modello provengono da librerie di terze parti (ad esempio angular-ui). – rrecaredo

risposta

6

Dai un'occhiata a questo stackoverflow Override/extend third-party component's template. L'idea principale è che puoi scrivere il tuo componente ed estendere il componente di terze parti.

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() 
    } 
} 

Ma ci sono aspetti negativi:

  1. Sarà ancora compilare componente originale.
  2. Se si utilizza questo metodo, non dimenticare di importare le pipe che sono state utilizzate per il modello thirdPartyClass nel formato .
  3. Se la funzionalità viene aggiornata in thirdPartyClass che dipende da sul modello, è necessario aggiornarlo manualmente.

    Abbonarsi a questo Github Issue per ulteriori aggiornamenti.

+0

Risolti i problemi. – alexKhymenko