【问题标题】:Error on passing derived class properties to the base class constructor in Angular在Angular中将派生类属性传递给基类构造函数时出错
【发布时间】:2026-02-19 10:30:01
【问题描述】:

我希望能够将“名称”变量从派生组件传递给基础组件的构造函数。原因是我想强制从基础组件扩展的派生组件传入“名称”变量

      @Component({
         selector: 'base-component',
         templateUrl: './base.component.html',
         styleUrls: ['./base.component.scss']
      })
      export class BaseComponent {
        public name: string;

        constructor(public sampleName: string) {
        this.name = sampleName;
        }
      }

我正在从派生组件中名为 name.enum.ts 的单独文件中导入“名称”变量

    export enum Name {
        NAME = 'DummyName'
    }

这是我的派生组件

    import {Name} from ../name.enum
    @Component({
     selector: 'derived-component',
     templateUrl: './derived.component.html',
     styleUrls: ['./derived.component.scss']
     })
    export class DerivedComponent extends BaseComponent {
      constructor() {
      super(Name.NAME); //This throws an error 'Cant resolve all parameters for BaseComponent'
    }

我该如何解决这个问题?

【问题讨论】:

    标签: angular typescript inheritance


    【解决方案1】:

    你的基类不应该是一个组件,而应该是一个抽象类。尝试将其更改为

    export abstract class BaseComponent {
      public name: string;
    
      constructor(simpleName: string) {
        this.name = simpleName;
      }
    }
    

    这是一个活生生的例子:https://stackblitz.com/edit/angular-base-component?file=src/app/app.component.ts

    【讨论】: