diff --git a/lib/core/registry_dynamic.dart b/lib/core/registry_dynamic.dart index f0a76ddfd..bea0b4972 100644 --- a/lib/core/registry_dynamic.dart +++ b/lib/core/registry_dynamic.dart @@ -3,6 +3,8 @@ library angular.core_dynamic; import 'dart:mirrors'; import 'package:angular/core/module_internal.dart'; +var _fieldMetadataCache = new Map>(); + class DynamicMetadataExtractor implements MetadataExtractor { final _fieldAnnotations = [ reflectType(NgAttr), @@ -51,6 +53,10 @@ class DynamicMetadataExtractor implements MetadataExtractor { Map fieldMetadataExtractor(Type type) { + return _fieldMetadataCache.putIfAbsent(type, () => _fieldMetadataExtractor(type)); + } + + Map _fieldMetadataExtractor(Type type) { ClassMirror cm = reflectType(type); final fields = {}; cm.declarations.forEach((Symbol name, DeclarationMirror decl) {