Abhinav Akhil
2 min readApr 13, 2023

Required Input in Angular v.16

Angular is a popular front-end framework that has been evolving continuously to provide a better development experience. One of the issues that developers face while working with Angular is that it is easy to miss passing the value to the component using the @Input() decorator. This can lead to unexpected errors and bugs that can be hard to trace.

To solve this problem, the Angular team has come up with a great solution called the Required Input. This feature was introduced in Angular 16.0.0-next.4, and it makes the components and directives required so that developers are aware that they need to pass a certain property or function to the input property.

By using the Required Input feature, developers can ensure that they have all the necessary data present before the component logic is executed. This results in fewer errors, better code quality, and hassle-free development.

Let’s take a look at how we can use this feature in our Angular applications. To mark an input property as required, we need to use the required property with the @Input() decorator.

For example, let’s say we have a User component with an @Input() decorator. We can mark this input property as required using the following code:

@Component({ 
selector: 'app-component',
templateUrl: './app.component.html',
stylesUrl:['./app.component.scss']
})
export class AppComponent {
@Input({ required: true }) user: User; // Required Input
}

Now, if we try to use the User component without passing the required input property, we will get a compilation error:

<app-component></app-component> ❌

To fix this error, we need to pass the required input property, like this:

<app-component [user]="(user | async)"> </app-component> ✅

In conclusion, the Required Input feature in Angular is a great addition that helps developers avoid unexpected errors and bugs. By using this feature, developers can ensure that they have all the necessary data present before the component logic is executed, resulting in better code quality and a smoother development experience.