Angular 10 升级:为什么对抽象(组件)类使用 @Directive() 而不是 @Component()?

Ros*_*eur 8 angular angular10

我最近将 Angular 应用程序从 v9 升级到了 v10。

我注意到不再支持未修饰的类。看这里

因此,在ng upgrade我的抽象组件中,没有装饰的组件已更改为具有@Directive()装饰器。

例如

export abstract class AbstractFormControl implements ControlValueAccessor { ... }
Run Code Online (Sandbox Code Playgroud)

被改为

@Directive()
export abstract class AbstractFormControl implements ControlValueAccessor { ... }
Run Code Online (Sandbox Code Playgroud)

为什么 Angular 使用@Directive. 难道不是@Component一个更好的方法吗,因为类更像是一个组件而不是指令?意图是什么?

kve*_*tis 5

组件需要您指定templatetemplateUrl,它不能与抽象类一起使用。

正如评论中提到的 - 组件是一种特殊类型的指令。所以继承抽象指令是可以的。