Angular2:如何覆盖组件模板?

时间:2016-04-16 16:09:05

标签: angular templates override

我正在考虑将角度1.4应用程序迁移到角度2,我想知道是否可以覆盖组件的模板,就像我们在angular1中使用$ provide.decorator(如Can you override specific templates in AngularUI Bootstrap?)一样。

我正在寻找像 TestComponentBuilder.overrideTemplate 这样的东西,但是对于非测试场景。 Angular2是否有类似的东西?

1 个答案:

答案 0 :(得分:7)

从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. 如果您使用此方法,请不要忘记导入任何管道 用于thirdPartyClass模板。
  3. 如果功能在依赖的thirdPartyClass中更新 在模板上,您需要手动更新。

    订阅此Github Issue以获取进一步的更新。