Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Learn Angular profile imagemehdi
mehdi forLearn Angular

Posted on • Edited on

A simpler Angular component inheritance

Related to this documentation in Angular website:

https://angular.dev/guide/components/inheritance

Simplifying inheritance by removing the need for:

  • having a constructor in the parent just for common dependency injection
  • having a constructor in the child just for common dependency injection
  • calling super for common dependency injection
  • calling super for common lifecycle hooks

Stackblitz link:

https://stackblitz.com/edit/stackblitz-starters-tzhggu9s?file=src%2Fmain.ts

Parent component:

@Component({template:``})abstractclassParent{protectedheroService=inject(HeroService);ngOnInit(){this.onInit();}protectedabstractonInit():void;}
Enter fullscreen modeExit fullscreen mode

Child component:

@Component({selector:'child',template:`Child`,})classChildextendsParent{overrideonInit(){this.heroService.log();}}
Enter fullscreen modeExit fullscreen mode

App:

@Component({selector:'app-root',template:`<child/>`,imports:[Child],})classApp{}bootstrapApplication(App);
Enter fullscreen modeExit fullscreen mode

Common service:

@Injectable({providedIn:'root'})classHeroService{log(){console.log('heroService');}}
Enter fullscreen modeExit fullscreen mode

Advice is to have:

{"compilerOptions":{"noImplicitOverride":true,}}
Enter fullscreen modeExit fullscreen mode

in tsconfig if not already there.
Goal is to avoid dev to mistakenly write an ngOnInit without knowing they'd be overriding the parent one.

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

More fromLearn Angular

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp