У меня есть приложение с Angular (2+) и AngularJS (1.x). Мы используем стороннюю библиотеку AngularJS, которая считывает объект из своего массива attrs в функции ссылки, например:
//3rd party lib code:
module.directive('test', () => ({
template: `Look at the console`,
link(elt, scope, attrs) {
console.log('link attrs.props', attrs.props);
}
}))
Шаблон:
<!-- someObject = {name: 'foo'} -->
<test props="{{someObject}}"></test>
Мы только что обновились до последней версии AngularJS и заметили проблему. Обычно attrs.props оценивает строковое представление объекта. Вместо получения строкового объекта мы получаем «[объект объекта]»
Я попытался воспроизвести минимальное количество раз, но не смог воспроизвести проблему, пока не попытался импортировать Zone.js, как вы можете видеть на этом stackblitz: https://stackblitz.com/edit/angularjs-attrs-test?file=app.js
Если Zone.js импортирован (что нам нужно для Angular 2+), тогда attrs.props
будет "[object Object]"
. Без него attrs.props
равно {name: 'foo'}
.
Это известная проблема? Есть ли обходной путь?