Я пытаюсь вызвать функции на элементе, объявленном в моем компоненте Angular 2. Проблема в том, что я не знаю, как извлечь элемент из моего JS-кода. Если я могу передать элемент из шаблона в JS-код, он работает, но с использованием document.querySelector
ничего не возвращает.Угловой 2: Как вызвать метод на вложенном компоненте?
Пример кода (plunk):
@View({
template: `
<div>
<span id="p1">{{name}}</span>
<span #p2>{{name}}</span>
</div>
`,
encapsulation: ViewEncapsulation.Native
})
export class Person {
sayHello(e) {
p1 = document.querySelector('p1');
console.log('p1:', p1)
p2 = document.querySelector('p2');
console.log('p2:', p2)
alert('VanillaId: ' + (p1 ? p1.innerHTML : 'null') +
'\nAngularId: ' + (p2 ? p2.innerHTML : 'null'));
}
}
Я подозреваю, что у него есть что-то делать с тенью йот, но я не знаю, как получить тень корня и использовать его, чтобы сделать запрос. this
, похоже, не показывает что-нибудь полезное для доступа к dom.
«Настройка ваш компонент состояния в коде JS, а затем мутировать/отобразить его с помощью свойства связывания, и общаться in/out с событиями ". Я пытаюсь вызвать функции на не угловом компоненте, и мне не удалось правильно настроить привязки, чтобы делать то, что я хочу из html. Ваш ответ решает мою проблему, но я могу опубликовать еще один вопрос о привязке шаблонов, если я запускаю в другой проблеме. – dgn
Да, мир прохладно. Мы все должны пытаться выложить StackOverflow с таким количеством вопросов angular2, насколько это возможно! –
'test (personComponent: Person) {}', похоже, не работает. Показывает ошибку провайдера. Любая помощь? – John