【发布时间】:2021-01-08 16:57:12
【问题描述】:
在 Angular 10 中,我扩展了一个组件,想重用基础组件的模板,并在扩展组件中添加相关的 html。
编辑:我尝试这样做的原因是因为我需要基本组件的功能并在应用程序的另一个区域添加额外的功能。基于此article。
考虑到这些简单的组件,这怎么可能?:
基础组件
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'base-component',
template: `
<p>base-component template</p>
`
})
export class BaseComponentComponent implements OnInit {
constructor() {
}
ngOnInit(): void {
}
}
扩展组件
import { Component, OnInit } from '@angular/core';
import { BaseComponentComponent } from '../base-component/base-component.component';
@Component({
selector: 'extended-component',
template: `
<!-- Add base component template here and not just by copy pasting... -->
<p>add extended-component's relevant html</p>
`
})
export class ExtendedComponentComponent extends BaseComponentComponent implements OnInit {
constructor() {
super();
}
}
【问题讨论】:
-
您似乎走错了路。组件通常是组合而不是扩展它们。您能否解释一下为什么首先需要这种扩展?
-
我对被证明是错误的持开放态度,但我认为这不是您真正想要这样做的方式。我可以想象你的父组件中的一个元素有一个指令,该指令在
ngOnInit循环期间自动插入你的基础组件,不过也可能带有参数。 -
感谢您回复我,我有理由更新了问题。
-
ng-content 非常适合您的问题,您可以将它放在 ExtendedComponent 中,当您想使用它时,请执行
,你有没有考虑过使用这种方法?