From 39db6e84620d01ac5de7446cf28b82d81fde263e Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 12 Sep 2016 23:40:46 +0300 Subject: [PATCH] Fix schema collapse after change discriminator --- lib/components/JsonSchema/json-schema.ts | 3 ++- lib/services/schema-normalizer.service.ts | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/components/JsonSchema/json-schema.ts b/lib/components/JsonSchema/json-schema.ts index 6cc6642d..6fa7917d 100644 --- a/lib/components/JsonSchema/json-schema.ts +++ b/lib/components/JsonSchema/json-schema.ts @@ -47,6 +47,7 @@ export class JsonSchema extends BaseComponent implements OnInit { this.pointer = activeDescendant.$ref; this.schema = this.specMgr.byPointer(this.pointer); + this.normalizer.reset(); this.schema = this.normalizer.normalize(this.schema, this.normPointer, {resolved: true}); this.preprocessSchema(); @@ -119,7 +120,7 @@ export class JsonSchema extends BaseComponent implements OnInit { } trackByName(index: number, item: any): number { - return item.name; + return item.name + (item._pointer || ''); } ngOnInit() { diff --git a/lib/services/schema-normalizer.service.ts b/lib/services/schema-normalizer.service.ts index 57142ae7..f97d6d65 100644 --- a/lib/services/schema-normalizer.service.ts +++ b/lib/services/schema-normalizer.service.ts @@ -41,6 +41,10 @@ export class SchemaNormalizer { res['x-redoc-normalized'] = true; return res; } + + reset() { + this._dereferencer.reset(); + } } class SchemaWalker { @@ -178,6 +182,9 @@ class SchemaDereferencer { constructor(private _spec: SpecManager, private normalizator: SchemaNormalizer) { } + reset() { + this._refCouner.reset(); + } visit($ref) { this._refCouner.visit($ref);