角继承:重命名成员和错误无法解析所有参数(?,?)

问题描述 投票:0回答:1

我具有以下地址表格部分。我想从中继承,继承其所有ngOnit,ngOnchanges,其所有方法等。唯一的事情是,想对所有变量加上“ POBox”进行重命名,这是怎么做的?尝试次数低于,

export class AddressFormComponent implements OnInit {

  public standardSub = new Subscription();
  private cdr: ChangeDetectorRef;

  constructor(
    @Input() public standardFormInput = new AddressMailingData(),
    @Output() private standardFormChange = new EventEmitter<any>(),
    public addressMailingStandardFormModel: any = new AddressMailingStandardFormModel(),
    public editAddressForm = addressMailingStandardFormModel.editAddressForm
  ) {
  }

新组件:

export class AddressMailingPOBoxComponent extends AddressFormComponent implements OnInit{

  constructor(standardFormInputPOBox: AddressMailingData, 
      standardFormChangePOBox: EventEmitter<any>,
      addressMailingStandardFormModelPOBox: AddressMailingStandardFormModel,
      editAddressFormPOBox: FormGroup
    ){
    super(standardFormInput2, standardFormChange2, addressMailingStandardFormModel2, editAddressForm2);
    }

}

接收错误:

compiler.js:2420未捕获的错误:无法解析AddressFormComponent的所有参数:(?,?,?,?)。

angular typescript angular8
1个回答
0
投票

发生该错误的原因是,您试图在AddressMailingPOBoxComponent之类的模板中使用<address-mailing-POBox></address-mailing-POBox>?如果是这样,那么该错误是因为Angular使用依赖项注入来填充构造函数参数,并且需要知道您认为我认为不是标准Providers组件或服务的所有输入参数的@Injectable。 >

至少要消除该错误,请不要在构造函数参数中定义并传递这些属性。在类本身的外部定义它们,然后按所需的方式对其进行初始化。

您最终可以实现的是在子类,子属性和基类中同时具有BOTH属性。您可以将子属性指向相应的基础属性,以便这些属性指向相同的数据/对象,但是由于您的问题注释中提到的原因,您不能重命名

基础类属性本身-我不知道认为您可以使用任何编程语言进行这样的重命名。 (对吗?)
© www.soinside.com 2019 - 2024. All rights reserved.