🚀 Enhancing Dynamic Component: The Advanced Input Binding for NgComponentOutlet in Angular

Tacettin Sertkaya
2 min readOct 10, 2023

NgComponentOutlet is a directive in Angular that provides a declarative approach to dynamic component loading. Traditionally, developers using Angular had to manually manage component factories and view containers to achieve dynamic component loading, but NgComponentOutlet this simplifies the process. In this article, we'll explore the new input binding feature for NgComponentOutlet and how it enhances the dynamic loading of components.

Simplifying with NgComponentOutlet

@Component({
selector: 'app-root',
standalone: true,
imports: [NgComponentOutlet],
template: `
<ng-container *ngComponentOutlet="userComponent" />
`,
})
export class AppComponent implements OnInit {
userComponent = UserComponent;
}

Where userComponent is the component type that needs to be loaded dynamically.

The New Input Binding Feature

The recent update to NgComponentOutlet introduces a new input binding that allows for more control over the dynamically loaded component.

Previously, to pass inputs or receive outputs from a dynamically loaded component, developers needed to manage it manually. With the new input binding, this process becomes more straightforward.

Passing Inputs:

You can now bind component inputs directly:

AppComponent

@Component({
selector: 'app-root',
standalone: true,
imports: [NgComponentOutlet],
template: `
<ng-container *ngComponentOutlet="userComponent; inputs: userInfo" />
`,
})
export class AppComponent implements OnInit {
userComponent = UserComponent;

userInfo = {
name: 'John',
surname: `Davidson`,
};
}

UserComponent

@Component({
selector: 'app-user',
standalone: true,
template: `Full name: {{ name }} {{ surname }}`,
})
export class UserComponent{
@Input() name: string;
@Input() surname: string;
}

In the above code, userInfo data pass from AppComponent to UserComponent

Conclusion

The new input binding feature for NgComponentOutlet further simplifies dynamic component loading in Angular. By providing a more declarative way to pass inputs and handle outputs, Angular continues to enhance its capabilities, making developers' lives easier. If you haven't started using NgComponentOutlet for dynamic component loading yet, now might be a great time to explore its benefits!

--

--