Скажем, у меня есть переменная, и я хочу увидеть ее значение в консоли. Но в Angular я не могу просто написать {{ console.log(variable) }}
в моем шаблоне. Я должен воссоздать эту функцию в своем классе, например:
test.component.ts:
log(val) { console.log(val) }
Тогда я могу получить значение:
test.component.html:
{{ log(variable) }}
Так почему я не могу просто написать {{ console.log(variable) }}
?
Таким образом, в Angular (2/4) единственное, что доступно в шаблоне, - это вещи, попадающие в сферу вашего соответствующего класса компонентов, т.е. все, что вы могли бы сказать "this.blah" в ts.
Таким образом, вы действительно можете делать то, что предлагаете, но вам нужно добавить консоль в область вашего компонента:
@Component({
selector: 'my-component',
template: 'This is my template {{console.log(variable)}}'
})
export class MyComponent {
console = console;
variable = 'yay';
}
(ключевая строка здесь console = console;
)
И тогда это выведет "переменную" с текстом "yay" на консоль - улов в том, что он будет делать это каждый раз, когда выражение отображается..., которое часто будет много раз. Так что это не особенно хорошая практика, но если вы просто отлаживаете, все может быть в порядке.
В: Почему я не могу просто написать {{console.log(variable)}}?
Ответ: короткий ответ. Поскольку console
встроенной функциональности не является частью объекта $scope
объекта.
Это происходит потому, что console.log()
является частью глобального window
объекта и объекта окна не могут быть доступны непосредственно в шаблонах.
Всякий раз, когда угловые двигатели находят строку интерполяции {{}}, она использует встроенную службу interpolation
которая в основном возвращает область, связанную с выражением, и оценивает переменные, используемые в этой области, в отношении этой возвращенной области. Шаблон имеет доступ только к тем свойствам, которые находятся в его области. объект window
не относится к сфере действия компонента/контроллера, поэтому его нельзя использовать напрямую.
Надеюсь, он очистит ваше замешательство.
вы должны использовать функцию
ех.
$scope.log2=function(param){
console.log(param);
}
затем используйте функцию
{{log2(variable)}}