我想使用共享模块中的组件作为基类。示例:
// base.component.ts
@Component({ selector: 'app-base', ...})
export class BaseComponent {}
// shared.module.ts
import { CommonModule } from '@angular/common';
import { BaseComponent } from './base/base.component';
@NgModule({
imports: [CommonModule],
declarations: [BaseComponent],
exports: [BaseComponent],
})
export class SharedModule {}
// app.module.ts
import { HelloComponent } from './hello.component';
import { SharedModule } from './shared/shared.module';
@NgModule({
imports: [..., SharedModule],
declarations: [AppComponent, HelloComponent],
bootstrap: [AppComponent],
})
export class AppModule {}
这是可以的(不是我的预期用途):
// hello.component.ts
@Component({ template: `<app-base></app-base>` })
export class HelloComponent {}
这不起作用(预期用途):
// hello.component.ts
@Component({...})
export class HelloComponent extends BaseComponent {} // <-- Cannot find name 'BaseComponent'
angular是否允许以上述简单的方式使用基类?或者我的预期用途是错误的,需要使用其他方法?
1条答案
按热度按时间whlutmcx1#
首先,使用sharedModule通常是一个陈旧的不良做法,最好使用SCAM(单组件Angular 模块)或独立组件。
不管怎样,如果你想扩展BaseComponent,你可以这样做,但是如果你不打算使用BaseComponent本身,你必须将它导入
import { BaseComponent } from './base/base.component';
,不需要在任何模块中声明它,你只需要声明HomeComponent