diff --git a/tools/dgeni/processors/categorizer.ts b/tools/dgeni/processors/categorizer.ts index d9e82463049..c6c2b85aa70 100644 --- a/tools/dgeni/processors/categorizer.ts +++ b/tools/dgeni/processors/categorizer.ts @@ -19,6 +19,7 @@ import { isProperty, isService } from '../common/decorators'; +import {ClassLikeExportDoc} from 'dgeni-packages/typescript/api-doc-types/ClassLikeExportDoc'; import {MethodMemberDoc} from 'dgeni-packages/typescript/api-doc-types/MethodMemberDoc'; import {sortCategorizedMembers} from '../common/sort-members'; @@ -31,6 +32,7 @@ export interface CategorizedClassDoc extends ClassExportDoc { isDeprecated: boolean; directiveExportAs?: string | null; directiveSelectors?: string[]; + extendedDoc: ClassLikeExportDoc | null; } export interface CategorizedPropertyMemberDoc extends PropertyMemberDoc { @@ -88,6 +90,11 @@ export class Categorizer implements Processor { classDoc.methods.sort(sortCategorizedMembers); classDoc.properties.sort(sortCategorizedMembers); + // Classes can only extend a single class. This means that there can't be multiple extend + // clauses for the Dgeni document. To make the template syntax simpler and more readable, + // store the extended class in a variable. + classDoc.extendedDoc = classDoc.extendsClauses[0] ? classDoc.extendsClauses[0].doc! : null; + // Categorize the current visited classDoc into its Angular type. if (isDirective(classDoc)) { classDoc.isDirective = true; diff --git a/tools/dgeni/templates/class.template.html b/tools/dgeni/templates/class.template.html index 797c053aacc..7948a18fda4 100644 --- a/tools/dgeni/templates/class.template.html +++ b/tools/dgeni/templates/class.template.html @@ -1,6 +1,12 @@
{$ class.name $}
+ {% if class.extendedDoc %}
+
+ extends
+ {$ class.extendedDoc.name $}
+
+ {% endif %}