События угловых элементов не запускаются, например, ngOnInit - PullRequest
0 голосов
/ 12 декабря 2018

Я думаю, это то, что я делаю неправильно, но я не знаю, что.Мне нужна маршрутизация в моем веб-компоненте Angular, и я могу заставить работать маршрутизацию.Однако компоненты, используемые в розетке маршрутизации, работают неправильно, если я использую распознаватель.События не стреляют!

Или, по крайней мере ... Они запускаются, если вы переходите к этому маршруту из другого маршрута в приложении, например, переход от myWebsite.com/#/ к myWebsite.com/#/myRoute/myParameter работает нормальнораспознаватель получает данные, и все события запускаются, как и ожидалось.Однако, если я нажму кнопку «Обновить» на этом маршруте или попытаюсь вставить URL (myWebsite.com/#/myRoute/myParameter) непосредственно в новую вкладку / браузер, который отображает компонент, вызывается конструктор, но события не запускаются!

Это происходит, только если я добавляю распознаватель.Если я удаляю распознаватель и добавляю console.log в каждое событие жизненного цикла, они все работают каждый раз!Есть ли что-то, что я могу настроить по-другому?Это ошибка?

Или есть способ, которым я могу получить свои данные из API, который заставляет события ждать, таким образом, обходя необходимость в распознавателе.Мне нужны данные до того, как компонент попытается отобразить, поскольку форма является динамической - и все вопросы о форме поступают из этого вызова API.Я попытался вызвать метод службы в ngOninit и конструкторе, подписавшись на него, но он получает данные после того, как все события сработали, и у меня просто пустая форма.

Спасибо!

1 Ответ

0 голосов
/ 12 декабря 2018

Оказывается, это ошибка в zone.js.Обнаружение изменений не работает, как ожидалось.Исправление есть, но оно еще не выпущено.В то же время кто-то другой сделал неофициальное исправление с помощью этого пакета npm ...

elements-zone-стратегии

Это работает как шарм!

Просто бросьте этов вашем приложенииconst helloElement = createCustomElement (HelloComponent, {injector: this.injector, стратегииFactory});customElements.define ('my-hello', helloElement);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...