Мой сценарий кода. У меня есть приложение Angular 2, в котором из нескольких полей есть одно поле ввода (для поиска), которое открывает десятичный старый URL-адрес во всплывающем окне (используя window.open()
), чтобы получить некоторые данные поиска. И он вызывает функцию из window
объекта родительской страницы.
Функция определена на странице index.html
приложения Angular 2 следующим образом:
<script>
function handler(res) {
var value = res;
}
</script>
Необходимость: value
переменной теперь должно быть привязано/привязано к модели ввода с именем inputModel
. Есть ли способ, которым это может быть достигнуто?
Обратите внимание: я знаю, что это не очень хорошая практика наличия тегов <script>
, все должно быть основано на компонентах. Но как я получил задание: -P
Спасибо!
Вы можете сохранить значение на объекте окна следующим образом: window['value'] = res;
Теперь вы можете получить доступ к значению res
внутри ваших угловых компонентов, таких как это window['value']
Но теперь проблема заключается в том, что это будет работать, только если handler
уже был вызван к тому моменту, когда угловой компонент считывает value
из window
объекта. Ваш угловой компонент не будет уведомлен о любых последующих вызовах обработчика, которые обновляют свойство value
в объекте window
.
Итак, вам нужен механизм для функции глобального обработчика, чтобы уведомить ваш угловой компонент о том, что value
свойства на вашем объекте окна было обновлено.
Вот один из способов общения с вашим угловым компонентом из-за угла:
input
(click)
к этому.handler
используйте document.getElementById('hidden input id').click()
для имитации щелчка.(click)
, созданный на шаге 2, который находится внутри углового контекста, будет вызван.handler
вызывается handler
(click)
в угловом контексте, по существу говорящий угловым, чтобы получить обновленное значение из объекта window
.Вот рабочий Plunker
В этом plunker я привязал функцию глобального обработчика к html
onclick
обработчику, который является внешним угловым контекстом для имитации вашего требования. Это событие щелчка будет передано угловому компоненту с использованием подхода, упомянутого выше.
function handler(res) { window.value = res;}
.