I recently had the exact same issue. I had an angular component with lot's of input fields and event select and option fields and i wanted to reset the component all at once.
Just running a reset function and resetting every element step by step seemed pretty elaborate and i searched for a better solution. Simply running this.ngOnInit won't reinitialize the component (at least in my case), it just simply runs your implemented code.
My first solution was to reassign the input fields values (my Input field values were binded to a variable in my component.ts), which kind of works, but only when you really change the value of the variable, otherwise angular won't detect any change an the rendered element will just stay the same.
So i came up with this solution:
Just wrap an ng-container template around the content you want to reset and copy that one more time and use a toggle variable with the *ngIf directive to switch between the two of them:
HTML
<ng-container *ngIf="!displayToggle">
<div #contentYouWantToDisplay>
<input value="{{myNumber | number: '1.2-2'}}"
</div>
</ng-container>
<ng-container *ngIf="displayToggle">
<div #contentYouWantToDisplay>
<input value="{{myNumber | number: '1.2-2'}}"
</div>
</ng-container>
TS
resetContent(){
displayToggle=!displayToggle;
//other resets:
}
So when you call the resetContent function div will be rerendered and the user input will be reset.
Please notice that all variables will remain in the same state, so you might have to run some other resets (in my div the user also had the option toggle a button and then another div expanded, so i also had to reset the divs height in the resetContent function)