【发布时间】:2018-12-11 04:25:36
【问题描述】:
你能覆盖第三方模块的组件声明吗?
假设您正在使用声明和导出两个组件的第三方模块:
@NgModule({
exports: [Cmp1, Cmp2]
declarations: [Cmp1, Cmp2]
})
export class ThirdPartyModule {}
Cmp1的模板:
`<app-cmp2></app-cmp2>`
Cmp2的模板:
`<p>foo</p>`
AppModule 导入ThirdPartyModule:
@NgModule({
...
imports: [ThirdPartyModule],
declarations: [AppComponent]
})
export class AppModule {}
AppComponent 的模板就是<app-cmp1></app-cmp1>。
您将如何重新声明/覆盖第三方模块对Cmp2 的实现,以便在Cmp1 中呈现的不是Cmp2,而是MyCmp2?
显然我需要扩展 Cmp2(或实现它的接口):
@Component({
... // same selector as Cmp2
})
export const MyCmp2 extends Cmp2 {}
我尝试通过 DI:{ provide: Cmp2, useClass: MyCmp2 } 提供它,但没有成功。
简单地在 app 模块中声明它也不会起作用,因为当两个组件匹配相同的选择器时,角度会抛出。这甚至可能吗?
我的具体用例是覆盖材料水平步进器的标题组件。
【问题讨论】:
-
嗨,如果您找到了答案或解决方法,我目前与您遇到的问题相同。请你能指出我正确的方向吗?这是我的问题stackoverflow.com/questions/57955904/…
-
对不起,我没有
-
好的,谢谢,这很难
-
嗨@j2L4e,我面临着完全相同的情况。只是想检查一下自从 ErnestoAlfonso 发表评论后您是否找到任何解决方案
-
我们没有进一步尝试,抱歉。
标签: angular