Почему я не могу изменить href программно, когда используется работник Angular Service? - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь программно изменить ссылку на внешнюю веб-страницу, которая использует работника Angular Service.

Ссылка выглядит как <a _ngcontent-c32="" href="/something">Something</a> и использует этот EventListener:

function(e){if(e=e||t.event){var n=this||e.target||t,r=n[C[e.type][f]];if(r)if(1===r.length)y(r[0],n,e);else for(var i=r.slice(),o=0;o<i.length&&(!e||!0!==e[z]);o++)y(i[o],n,e)}}

Когда я запускаю document.querySelector('a').setAttribute('href', '/something-else') или document.querySelector('a').href = '/something-else', я вижу, что href технически изменился, но веб-страница полностью игнорирует его, когда я нажимаю на ссылку, и вместо этого использует оригинальный href.

Есть ли что-то, что я могу сделатьчтобы сервисный работник знал об этом изменении?

1 Ответ

0 голосов
/ 27 ноября 2018

сначала попробуйте использовать угловое свойство [attr.href] или [href], и с его помощью вы можете программно изменить URL-адрес, используя троичное условие.

<a [href]="reverse ? '/11394635/pochemu-ya-ne-mogu-izmenit-href-programmno-kogda-ispolzuetsya-rabotnik-angular-service' : 'https://material.angular.io/components/select/overview'" target="_blank">click here</a>

Примечание: оба эти свойства не добавляютсяbase URL, поэтому вам нужно указать полный путь.

...