It might be SPA or Angular or HTML, I would suggest you to go for Launch.
Launch as a Tag Manager has many capabilities; the most important one i would say is that it reduce your IT interactions for updating changes.
There are more links available across google to compare the Tag Management Systems to get the Pro's and Con's.
Also, if you use launch, you can update the codes Asynchronously.
In case of SPA both the methods would require support from developers.
With Adobe Launch, involvement of developers is reduced by a considerable extent, the developers will be responsible for updating the dataLayer or the direct call rules. With Adobe Launch you can also set a direct call rule with custom parameters. Moreover, apart from Analytics, if there are any other tools like deployment of facebook or other marketing pixels, you will not be required to bother the dev again and can play with the already setup dataLayer
I would advice for an Adobe Launch based setup.
Let me know if you have any further questions.
Sanmeet Singh Walia