Я работаю над веб-приложением на основе Angular 2. В Angular 1 у нас были двусторонние привязки данных, поэтому услуги можно было легко связать с данными страницы с помощью $ scope (если мы что-то изменим в сервисе, данные будут автоматически обновляться).
В Angular 2 у нас есть EventEmitter, я думал, что это похоже на Angular 1 $ scope. $ Broadcast, поэтому с этим могут возникнуть проблемы с производительностью.
Как насчет производительности EventEmitters? Они замедляют применение?
События, выпущенные EventEmitter
, не пузырятся, а также не транслируются. EventEmitters
предназначены для привязки только от дочернего к родительскому.
Для трансляции используйте общие службы.
Смотрите также
- https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service
- обновление изменений переменных в компонентах из службы с угловым2
- Делегирование: EventEmitter или Observable в Angular2
EventEmitters
не является бременем для производительности. Они (по крайней мере, в настоящее время - могут измениться в будущем) можноObservable
когда отправленное событие вызывает обратный вызов для подписчиков. События, генерируемыеEventEmitter
могут вызывать обнаружение изменений Angulars. Это зависит от вашего приложения и компонентов, сколько фактически нужно сделать, когда вызывается обнаружение изменений. Например, если вы используетеOnPush
это может быть дешево. По умолчанию (CheckAlways
) это может стать довольно дорогим.