首页 > 解决方案 > 得到“错误 TS2304:找不到名称 'id'。” 当试图测试“ngx-diagram”示例时

问题描述

我正在尝试ngx-diagram从这里测试这个简单的例子:https ://www.npmjs.com/package/ngx-diagram

但是当我运行我的代码时,它给了我这些错误消息:

ERROR in src/app/app.component.ts:23:26 - error TS2304: Cannot find name 'id'.

23       this.nodes = [{id: id()}];
                            ~~
src/app/app.component.ts:25:23 - error TS2304: Cannot find name 'id'.

25           const idl = id();
                         ~~
src/app/app.component.ts:59:25 - error TS2304: Cannot find name 'id'.

59       const node = {id: id()};
                           ~~

这是.ts我使用的文件:

import { Component, ViewChild } from '@angular/core';
import {NgxDiagramComponent} from 'ngx-diagram'


@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})


export class AppComponent {
  @ViewChild('diagram' , {static:false})  diagram : NgxDiagramComponent;
  //title = 'ngx-diagram';

  selection = [];

  nodes = [];
  links = [];

  ngOnInit() {

      this.nodes = [{id: id()}];
      for (let i = 0; i < 10; i++) {
          const idl = id();
          this.nodes.push({id: idl});
      }

      this.nodes.forEach(source => {
          for (let i = 0; i < 1; i++) {
              const target = this.nodes[Math.floor(Math.random() * this.nodes.length)];
              if (source.id !== target.id) {
                  this.links.push({source: source.id, target: target.id});
              }
          }
      });

      this.diagram.updateNodes(this.nodes); // First the nodes then the links
      this.diagram.updateLinks(this.links);
      this.diagram.redraw();


  }

  connected(connection) {

      if (connection.source.id !== connection.target.id) {
          this.links.push({source: connection.source.id, target: connection.target.id});

          this.diagram.updateLinks(this.links);
          this.diagram.redraw();

      }

  }

  created(creation) {

      const node = {id: id()};
      this.nodes.push(node);

      this.diagram.updateNodes(this.nodes);
      this.diagram.moveNodeTo(node.id, creation.x, creation.y);
      this.diagram.redraw();

  }

  selected(selection) {

      this.selection = selection;

  }

  deleteSelected() {

      this.nodes = this.nodes.filter(node => !this.selection.find(n => node.id === n.id));
      this.links = this.links.filter(link => !(this.selection.find(n => link.source === n.id || link.target === n.id)));

      this.diagram.updateNodes(this.nodes);
      this.diagram.redraw();
      this.selection = [];

  }

  deleteLinksBetweenSelected() {

      this.links = this.links.filter(link => !(this.selection.find(n => link.source === n.id) && this.selection.find(n => link.target === n.id)));

      this.diagram.updateLinks(this.links);
      this.diagram.redraw();

  }

  autoLayout() {
      this.diagram.autoLayout().then();
  }

}

标签: angularngx-charts

解决方案


使用库的非常奇怪的示例(在库 github 页面上)。我认为 id() 是生成随机字符串并返回它的函数,但是 ngx-charts 的作者没有提到它。尝试替换id()this.id(). 然后创建返回一些随机字符串或整数的函数。

最后,我建议找到其他库,因为作者放弃了它。没有更新,没有答案,用户也很少。


推荐阅读