Skip to content
This repository was archived by the owner on May 25, 2021. It is now read-only.

Commit 198c699

Browse files
author
Steven Kampen
authored
Merge pull request #933 from stevenkampen/bug/918-ng-module-display-in-injector-graph
Improve NgModule parsing and protect against missing info in template
2 parents 3a6162a + 48974ec commit 198c699

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

src/backend/backend.ts

+9-4
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,16 @@ const messageBuffer = new MessageQueue<Message<any>>();
6868
/// NOTE(cbond): We collect roots from all applications (mulit-app support)
6969
let previousTree: MutableTree,
7070
previousCount: number,
71+
initialModules: { [key: string]: any },
7172
onMouseOver,
7273
onMouseDown;
7374

74-
const parseInitialModules = (roots: Array<any>) => {
75-
if (roots.length) {
76-
messageBuffer.enqueue(MessageFactory.ngModules(parseModules(roots[0])));
75+
const parseInitialModules = () => {
76+
const roots = getAllAngularRootElements().map(r => ng.probe(r));
77+
if (!initialModules && roots.length) {
78+
initialModules = parseModules(roots[0]);
79+
messageBuffer.enqueue(MessageFactory.ngModules(initialModules));
80+
send(MessageFactory.push());
7781
}
7882
};
7983

@@ -132,7 +136,6 @@ const bind = (root) => {
132136

133137
// initial load
134138
subject.next(void 0);
135-
parseInitialModules(getAllAngularRootElements().map(r => ng.probe(r)));
136139
};
137140

138141
const checkDebug = (fn: () => void) => {
@@ -159,6 +162,8 @@ const resubscribe = () => {
159162
subscriptions.splice(0, subscriptions.length);
160163

161164
getAllAngularRootElements().forEach(root => bind(ng.probe(root)));
165+
166+
setTimeout(parseInitialModules);
162167
});
163168
};
164169

src/backend/utils/parse-modules.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,19 @@ const randomId = () => {
4040
};
4141

4242
const resolveTokenIdMetaData = (token, tokenIdMap: { [key: string]: any }) => {
43-
let tokenId = '';
43+
let tokenId = null;
4444
if (typeof token === 'string') {
4545
tokenId = token;
4646
} else {
4747
if (!Reflect.getMetadata(AUGURY_TOKEN_ID_METADATA_KEY, token)) {
48+
tokenId = randomId();
4849
while (tokenIdMap[tokenId]) {
4950
tokenId = randomId();
5051
}
5152
Reflect.defineMetadata(AUGURY_TOKEN_ID_METADATA_KEY, tokenId, token);
5253
}
5354
}
54-
return { token: token, augury_token_id: tokenId };
55+
return { token: token, augury_token_id: tokenId || Reflect.getMetadata(AUGURY_TOKEN_ID_METADATA_KEY, token) };
5556
};
5657

5758
const parseProviderName = p =>

src/frontend/components/injector-tree/injector-tree.html

+6-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ <h3 class="monospace primary-color">
4444
<ul class="list-reset m0">
4545
<li>
4646
<span class="info-key">NgModule:</span>
47-
<span class="info-value">{{ngModules.tokenIdMap[parentHierarchy[focusedComponent].augury_token_id].module}}</span>
47+
<span class="info-value" *ngIf="ngModules && ngModules.tokenIdMap[parentHierarchy[focusedComponent].augury_token_id]">
48+
{{ngModules.tokenIdMap[parentHierarchy[focusedComponent].augury_token_id].module}}
49+
</span>
4850
</li>
4951
</ul>
5052
</div>
@@ -62,7 +64,9 @@ <h3 class="monospace primary-color">
6264
</li>
6365
<li>
6466
<span class="info-key">NgModule:</span>
65-
<span class="info-value">{{ngModules.tokenIdMap[parentHierarchy[focusedComponent].dependencies[focusedDependency].id].module}}</span>
67+
<span *ngIf="ngModules && ngModules.tokenIdMap[parentHierarchy[focusedComponent].dependencies[focusedDependency].id]" class="info-value">
68+
{{ngModules.tokenIdMap[parentHierarchy[focusedComponent].dependencies[focusedDependency].id].module}}
69+
</span>
6670
</li>
6771
</ul>
6872
</div>

0 commit comments

Comments
 (0)