feat(transformers): added support for lifecycle events
This commit is contained in:
@@ -18,7 +18,12 @@ export function directiveMetadataToMap(meta: DirectiveMetadata): Map<string, any
|
||||
['properties', _cloneIfPresent(meta.properties)],
|
||||
['readAttributes', _cloneIfPresent(meta.readAttributes)],
|
||||
['type', meta.type],
|
||||
['version', 1]
|
||||
['callOnDestroy', meta.callOnDestroy],
|
||||
['callOnCheck', meta.callOnCheck],
|
||||
['callOnInit', meta.callOnInit],
|
||||
['callOnChange', meta.callOnChange],
|
||||
['callOnAllChangesDone', meta.callOnAllChangesDone],
|
||||
['version', 1],
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -38,7 +43,12 @@ export function directiveMetadataFromMap(map: Map<string, any>): DirectiveMetada
|
||||
hostAttributes:<Map<string, string>>_cloneIfPresent(MapWrapper.get(map, 'hostAttributes')),
|
||||
properties:<List<string>>_cloneIfPresent(MapWrapper.get(map, 'properties')),
|
||||
readAttributes:<List<string>>_cloneIfPresent(MapWrapper.get(map, 'readAttributes')),
|
||||
type:<number>MapWrapper.get(map, 'type')
|
||||
type:<number>MapWrapper.get(map, 'type'),
|
||||
callOnDestroy:<boolean>MapWrapper.get(map, 'callOnDestroy'),
|
||||
callOnCheck:<boolean>MapWrapper.get(map, 'callOnCheck'),
|
||||
callOnChange:<boolean>MapWrapper.get(map, 'callOnChange'),
|
||||
callOnInit:<boolean>MapWrapper.get(map, 'callOnInit'),
|
||||
callOnAllChangesDone:<boolean>MapWrapper.get(map, 'callOnAllChangesDone')
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +60,13 @@ class _DirectiveMetadataVisitor extends Object
|
||||
hostListeners: {},
|
||||
hostProperties: {},
|
||||
hostAttributes: {},
|
||||
readAttributes: []);
|
||||
readAttributes: [],
|
||||
callOnDestroy: false,
|
||||
callOnChange: false,
|
||||
callOnCheck: false,
|
||||
callOnInit: false,
|
||||
callOnAllChangesDone: false
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -126,6 +132,10 @@ class _DirectiveMetadataVisitor extends Object
|
||||
break;
|
||||
case 'hostListeners':
|
||||
_populateHostListeners(node.expression);
|
||||
break;
|
||||
case 'lifecycle':
|
||||
_populateLifecycle(node.expression);
|
||||
break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -214,4 +224,20 @@ class _DirectiveMetadataVisitor extends Object
|
||||
_populateMap(
|
||||
hostAttributeValue, meta.hostAttributes, 'Directive#hostAttributes');
|
||||
}
|
||||
|
||||
void _populateLifecycle(Expression lifecycleValue) {
|
||||
_checkMeta();
|
||||
if (lifecycleValue is! ListLiteral) {
|
||||
throw new FormatException(
|
||||
'Angular 2 expects a List but could not understand the value for lifecycle. '
|
||||
'$lifecycleValue');
|
||||
}
|
||||
ListLiteral l = lifecycleValue;
|
||||
var lifecycleEvents = l.elements.map((s) => s.toSource());
|
||||
meta.callOnDestroy = lifecycleEvents.contains("onDestroy");
|
||||
meta.callOnChange = lifecycleEvents.contains("onChange");
|
||||
meta.callOnCheck = lifecycleEvents.contains("onCheck");
|
||||
meta.callOnInit = lifecycleEvents.contains("onInit");
|
||||
meta.callOnAllChangesDone = lifecycleEvents.contains("onAllChangesDone");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user