Sometimes, we want to call component function from outside the app with Angular.
In this article, we’ll look at how to call component function from outside the app with Angular.
How to call component function from outside the app with Angular?
To call component function from outside the app with Angular, we need to use NgZone
.
For instance, we write
import { Component, NgZone, OnInit, OnDestroy } from "@angular/core";
@Component({
selector: "my-app",
templateUrl: "app.component.html",
})
export class AppComponent implements OnInit, OnDestroy {
constructor(private ngZone: NgZone) {}
ngOnInit() {
window.my = window.my || {};
window.my.namespace = window.my.namespace || {};
window.my.namespace.publicFunc = this.publicFunc.bind(this);
}
ngOnDestroy() {
window.my.namespace.publicFunc = null;
}
publicFunc() {
this.ngZone.run(() => this.privateFunc());
}
privateFunc() {
// ...
}
}
to inject NgZone
into our AppComponent
.
Then we define the publicFunc
method that calls this.ngZone.run
with a callback that calls this.privateFunc
.
Next, in ngOnInit
, we set window.my.namespace.publicFunc
to this.publicFunc.bind(this)
so that publicFunc
is exposed to the outside with the component as the value of this
inside publicFunc
.
Then we can call publicFunc
outside our app with
my.namespace.publicFunc()
Conclusion
To call component function from outside the app with Angular, we need to use NgZone
.