To solve this, I used an isLoading$ subject to keep track of when data is currently loading, and I subscribe to it at the level where the IgxGrid is implemented. When a new loading comes through as 'true', I set the grid data to null and then set the grid.isLoading property to my subject's value.
The main issue I believe is that when the grid still has data, the loading icon will not display, so give an empty data set to clear it.
if (this.isLoading$){
this.isLoading$.pipe(takeUntil(this.destroy$)).subscribe(loading => {
if (loading) { this.grid.data = new Array(); }
this.grid.isLoading = loading;
});
}