код должен обычно менять размер макета на 5%
Нет, не должен.
Угловые директивы используются в Typescript или в контексте предварительной сборки .
Когда вы пишете
document.getElementById('nav2'); nav.setAttribute('fxFlex', '5%')
Вы указываете Javascript , который был скомпилирован из Typescript (то есть в post-создайте контекст ), чтобы получить элемент и добавьте директиву Angular к своему атрибуту.
Дело в том, что код уже скомпилирован, поэтому вы не можете добавить машинописный текст в Javascript, иначе вам придется скомпилировать его снова (и я даже не уверен, что вы сможете это сделать).
Предлагаю вам узнать об угловых элементах и о том, как они работают, прежде чем их использовать.Кроме того, рассмотрите возможность публикации Минимальный, Полный и Проверяемый пример , если вы хотите, чтобы кто-то предложил решение, адаптированное к вашему случаю.