I also implemented ADAL js in my Angular 5 application and have implemented it the following way:
The user authenticates with AD and gets an access token with a lifetime (60 min in my case). That token is cached in browser. Everytime a request to the backend is fired, the token is taken from Cache and will be sent to the backend.
Then, there's another parameter called expireOffsetSeconds
(defined on frontend in Adal config). It's set to 600 (=10 mins) for me.
That means, that from minute 1 to minute 49 it takes the token from cache. In the last 10 minutes it then fires a new request to AD to renew the token.
Therefore, it is ensured that the user does not have to re-login every hour. BUT in case of inactivity the users' session automatically gets invalidated by ADAL.
Any feedback/improvements welcome :)