typescript 无法在Angular中使用共享模块中的基类

k2arahey  于 2023-01-31  发布在  TypeScript
关注(0)|答案(1)|浏览(134)

我想使用共享模块中的组件作为基类。示例:

// 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是否允许以上述简单的方式使用基类?或者我的预期用途是错误的,需要使用其他方法?

whlutmcx

whlutmcx1#

首先,使用sharedModule通常是一个陈旧的不良做法,最好使用SCAM(单组件Angular 模块)或独立组件。
不管怎样,如果你想扩展BaseComponent,你可以这样做,但是如果你不打算使用BaseComponent本身,你必须将它导入import { BaseComponent } from './base/base.component';,不需要在任何模块中声明它,你只需要声明HomeComponent

相关问题