I have some components like CricketComponent, FootballComponent, TennisComponent etc. All These Classes have some common properties :- TeamName, teamSize, players etc which are @Input().
Now I created a BaseComponent class, defined all these properties in there and this baseComponent class will be extended by cricket/football/tennis/etcComponents.
baseComponent.ts
export class BaseComponent { @Input() TeamName: string; @Input() teamSize: number; @Input() players: any; } CricketComponent.ts
@Component({ selector: 'app-cricket', templateUrl: './cricket.component.html', styleUrls: ['./cricket.component.scss'] }) export class cricketComponent extends BaseComponent implements OnInit { constructor() { super(); } ngOnInit(): void { } } I am getting this error:
ERROR in src/app/base-screen.ts:4:14 - error NG2007:
Class is using Angular features but is not decorated. Please add an explicit Angular decorator.
answer re: Class is using Angular features but is not decorated. Please add an explicit Angular decorator. You'll need to add a @Component decorator to that base class (which should probably also be declared abstract ).
Directivelink. Decorator that marks a class as an Angular directive. You can define your own directives to attach custom behavior to elements in the DOM.
Decorators are a design pattern that is used to separate modification or decoration of a class without modifying the original source code. In AngularJS, decorators are functions that allow a service, directive or filter to be modified prior to its usage.
Decorators are a new feature of TypeScript and used throughout the Angular code, but they are nothing to be scared of. With decorators we can configure and customise our classes at design time. They are just functions that can be used to add meta-data, properties or functions to the thing they are attached to.
You'll need to add a @Component decorator to that base class (which should probably also be declared abstract).
This is the bare minimum you can get away with in Angular 9:
@Component({ template: '' }) export abstract class BaseComponent { @Input() teamName: string; @Input() teamSize: number; @Input() players: any; } For Angular 10+, see this answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With