2017-01-11 2 views
3

Интересно, возможно ли как-то. Вопрос не ограничивается console.info, но все функции Javascript вообще.Angular2 write on console from template click event

<a (click)="console.info(foo)">click me doesn't work</a> 

Cannot read property 'info' of undefined

кажется, что шаблоны могут только компонент доступа к свойствам, так что вы должны создать дополнительную функцию, что внутри вашего Component:

<a (click)="executeConsole(val)">execute console does work</a> 

executeConsole(val) { 
    console.info(val); 
} 

С Реагировать вы можете сделать что-то вроде что:

<a onClick={() => console.info('it works')}>it works</a> 

ответ

2

Вам придется объявите свойство, которое может получить доступ к объекту консоли в коде компонента ts, затем вызовите его. Например ...

Признаться в ваших компонентов ц ...

public c : any; 

В компоненте конструктора установить свойство объекта консоли ...

this.c = console; 

По вашему мнению вы можете теперь звоните info() ...

<a (click)="this.c.info("Hello world")">click me</a> 
+1

Мех, я надеялся, что будет что-то лучше этого. – zurfyx

+0

Согласен, было бы неплохо, если бы вы могли сделать это без изменений в код компонента ts. –

1

Вы можете создать служебную оболочку для своей консоли и вставить ее в коррекцию поддерживающие компоненты. Если вы сделаете это в машинописном тексте в конструкторе, он может автоматически создать для вас открытый член, который будет доступен из шаблона, поэтому просто нужно добавить его в качестве параметра конструктора.

Похоже, что невозможно иметь «глобальный» охват. См. here.