2016-04-16 104 views
9

我正在考慮將angular 1.4應用程序遷移到angular 2,我想知道是否可以像使用$ provide.decorator(如Can you override specific templates in AngularUI Bootstrap?)那樣覆蓋angular1中的組件模板。Angular2:如何覆蓋組件模板?

我正在尋找類似TestComponentBuilder.overrideTemplate但對於非測試場景。 Angular2是否有類似的東西?

+0

你的意思是重複使用一個組件與幾個不同的模板? –

+0

當然可以,看到這個[答案](http://stackoverflow.com/questions/36660376/angular2-web-vs-mobile-templateurl/36660838#36660838)。 – kemsky

+0

謝謝,不幸的是,我想重寫模板的組件大部分來自第三方庫(即angular-ui)。 – rrecaredo

回答

6

看看這個答案從stackoverflow Override/extend third-party component's template。主要想法是您可以編寫自己的組件並擴展第三方組件。

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

但也有缺點:

  1. 它仍然會編譯原始組件。
  2. 如果您使用此方法,請不要忘記導入在第三方類模板中使用 的任何管道。
  3. 如果功能在第三方類中更新,取決於模板上的 ,則需要手動更新。

    訂閱此Github Issue進一步更新。

+0

修復了這些問題。 – alexKhymenko