Zones composing
by Alex Zolotyh
HTML
<script src="https://cdn.rawgit.com/angular/zone.js/master/dist/zone.min.js"></script>
Babel + JSX
const errorHandlerZone = Zone.current.fork({
name: 'ErrorZone',
onHandleError: (parentZoneDelegate, currentZone, targetZone, error) => {
sendError(error);
return false;
}
});
const trackingZone = errorHandlerZone.fork({
name: 'TrackingZone'
});
class Widget {
render = () => {
throw 'render error';
}
}
trackingZone.runGuarded(function(){
document.addEventListener('click', (event) => {
trackEvent(event);
}, true);
const widget = new Widget();
widget.render();
return this;
});
function sendError(error){
alert(`Ошибка: ${error} Название зоны: ${Zone.current.name}`);
}
function trackEvent(event){
alert(`Трекинг: ${event} Название зоны: ${Zone.current.name}`);
}