I'm writing an Angular component that has a property Mode(): string
.
I would like to be able to set this property programmatically not in response to any event.
The problem is that in the absence of a browser event, a template binding {{Mode}}
doesn't update.
Is there a way to trigger this change detection manually?
Best Answer
Try one of these:
ApplicationRef.tick()
- similar to AngularJS's$rootScope.$digest()
-- i.e., check the full component treeNgZone.run(callback)
- similar to$rootScope.$apply(callback)
-- i.e., evaluate the callback function inside the Angular zone. I think, but I'm not sure, that this ends up checking the full component tree after executing the callback function.ChangeDetectorRef.detectChanges()
- similar to$scope.$digest()
-- i.e., check only this component and its childrenYou can inject
ApplicationRef
,NgZone
, orChangeDetectorRef
into your component.