Angular 18:在组件超类中使用输入信号

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

我已将 Angular 17 应用程序更新到 Angular 18,现在 Angular 不希望我在超级类中拥有信号输入:

export class DisplayComponent {

  name = input.required<string>();

}

@Component({
  selector: 'app-display',
  standalone: true,
  ...})
export class ADisplayComponent extends DisplayComponent {

  someMethod() {
    // do something with this.name();
  }
}

运行此 Angular 时抱怨:

TS-998110: Unsupported call to the input.required function. 
This function can only be used as the initializer of a property on a @Component or @Directive class. [plugin angular-compiler]

从技术上讲,编译器是正确的,我在没有

@Component
装饰的类上使用输入信号,但感觉这应该没问题,因为它是超类。

在 Angular 17 中这不是问题!

我有相当多的组件继承自

DisplayComponent
,并且不想在所有组件中重复相同的导入声明。

我在这里能做什么?

angular signals
1个回答
1
投票

当在类(用于继承)上使用像

signal
ViewChild
这样的角度特征时,我们需要一个装饰器,我们可以使用
@Directive()
来消除这个错误。

@Directive()
export class DisplayComponent {

  name = input.required<string>();

}
© www.soinside.com 2019 - 2024. All rights reserved.