Как добавить пользовательский макет ngx-графа

Все макеты объявлены в проектах LayoutService /swimlane/ngx-graph/src/lib/graph/layouts/layout.service.ts

Я могу создать новый макет, но LayoutService#getLayout() не может обнаружить новый.

const layouts = {
  dagre: DagreLayout,
  dagreCluster: DagreClusterLayout,
  dagreNodesOnly: DagreNodesOnlyLayout,
  d3ForceDirected: D3ForceDirectedLayout,
  colaForceDirected: ColaForceDirectedLayout
};

@Injectable()
export class LayoutService {
  getLayout(name: string): Layout {
    if (layouts[name]) {
      return new layouts[name]();
    } else {
      throw new Error(`Unknown layout type '${name}'`);
    }
  }
}

Я получаю: выкинуть новую ошибку (Unknown layout type '${name}');

1 ответ

Публикация моего ответа также здесь:

Вам необходимо реализовать класс с интерфейсом Layout, затем создать объект из этого класса и передать этот объект на вход макета вместо строки.

Вот компонент, который показывает, как это сделать: https://github.com/swimlane/ngx-graph/blob/master/src/docs/demos/components/ngx-graph-custom-curve/ngx-graph-custom-curve.component.ts#L15

Другие вопросы по тегам