当前位置: 首页 > 知识库问答 >
问题:

在Angular 5组件主体元素上设置的属性在jsPlumb中无效

姬魁
2023-03-14

我正在做我的第一个Angular

下面是我的代码-我调用一个REST,返回一个项目数组。我将这些项目渲染到我的画布上,就像这样(addNodeToCanvas在循环中被称为)-

addNodeToCanvas(card) {
    const factory = this.ComponentFactoryResolver.resolveComponentFactory(CardComponent);
    const ref = this.cardDontainer.createComponent(factory);
    ref.location.nativeElement.id = card.uuid; 
    ref.instance.cardData = card;
} 

注意,在第4行中,我将对象的唯一标识符设置为DOM元素的ID,jsPlumb可以引用该ID来创建连接。当我运行应用程序时,我会看到一个呈现的DOM列表,如下所示-

<card _nghost-c4="" id="6c7e7bd4-200f-4b8b-8492-a59fb8809819" class="ng-star-inserted">
    <div _ngcontent-c4="" class="item">
        Hi! I'm a node. My name is Dest 1.
    </div>
</card>

一旦元素被添加到DOM中,我就会像这样创建连接-

for (let c in cards) {
    this.jsPlumbInstance.draggable(cards[c].uuid);
}
for(let e in edges) {
    this.jsPlumbInstance.connect({
        source: edges[e].source,
        target: edges[e].destination,
    }, routeConnectionSettings);
}

现在我面临的问题是,当jsPlumb查找元素卡#6c7e7bd4-200f-4b8b-8492-a59fb8809819(例如)时,它无法在DOM树上找到这个元素,也无法创建连接。

我注意到其中的几个——当在div而不是组件选择器上设置ID时,一切都很好,图表创建起来没有任何问题。类似地,当我在CSS文件中为html" target="_blank">组件选择器设置样式时,样式似乎也不会生效。

这是因为组件选择器以某种方式静音,无法访问吗?任何帮助都非常感谢。

这是我给裁判的JSON-

"edges": [
    {
        "uuid": "dcc1151f-4668-4b3a-bbce-bc473545fcd7",
        "source": "770a7359-d8cf-4803-9901-0383a8d080f2",
        "destination": "6c7e7bd4-200f-4b8b-8492-a59fb8809819"
    }
],
"cards": [
    {
        "uuid": "6c7e7bd4-200f-4b8b-8492-a59fb8809819",
        "name": "Dest 1",
        "type": "DESTINATION"
    },
    {
        "uuid": "770a7359-d8cf-4803-9901-0383a8d080f2",
        "name": "Src 1",
        "type": "SOURCE"
    }
]

共有1个答案

慕容兴贤
2023-03-14

设置:host{display:block;}将解决此问题。

您不能直接访问模板选择器,因为它不在应用CSS的组件范围内。

: host选择器是以host元素为目标的唯一方法。您不能使用其他选择器从组件内部访问主机元素,因为它不是组件自己模板的一部分。主机元素位于父组件的模板中。

Angular Docs:https://angular.io/guide/component-styles#host

 类似资料:
  • 问题内容: 我有一个带有属性的div 。我想更新它的价值;如果我使用,它不会改变吗?我只需要使用吗? 我在HTML5和jQuery之间感到困惑吗?请指教。谢谢! 编辑:更新为,但HTML仍未更新。 问题答案: 的HTML JS 从参考: jQuery本身使用该方法以“事件”和“句柄”的名称保存信息,并且还保留任何以下划线(_)开头的数据名称供内部使用。 应当注意,jQuery 不会更改HTML中的

  • 问题内容: 用Java编写时,以下内容: 添加属性的顺序不保留在结果XML文件中。 我如何控制XML元素内属性的顺序(这样,人类将很容易阅读…)? 问题答案: 根据DOM标准,属性节点没有定义的顺序: 实现NamedNodeMap接口的对象用于表示可以按名称访问的节点的集合。请注意,NamedNodeMap不会从NodeList继承。NamedNodeMaps不会以任何特定顺序维护。 包含在实现N

  • 我发现了一个我不知道如何解决的问题。 如果使用这个模板,那么就没有问题: 例如,输出为: 如果我编辑一个模板并尝试将“supplier.id”设置为html属性“data-supplierid”: 出现一个错误:

  • 问题内容: 试图隐藏文件夹没有成功。我发现了: 但这对我没有用。我究竟做错了什么? 问题答案: 您的代码有两件事,都与文件夹名称文字有关。该函数需要Unicode字符串参数。您可以通过在字符串前面加上字符来指定其中之一。其次,字符串中的任何文字反斜杠字符都必须加倍,或者您也可以为其添加前缀。下面的代码中使用了一个双前缀。 您可以在此处找到Windows的系统错误代码。要在资源管理器中查看属性更改的

  • 我正在从apache camel调用groovy脚本。当我调用groovy脚本时,我收到以下错误提示。我如何克服这个问题?我尝试了setProperty()。setHeader但没有运气。 错误: 我尝试按以下方式设置属性,但遇到了相同的错误 我知道我可以这样做。但我想用apache camel groovy组件来实现这一点。 测验谷胱甘肽

  • 我试图一次为一个元素设置多个属性。我找到了这个答案,以及对那个答案的这个评论。在那里的JSFiddle中,他不使用字符串作为属性名,与使用字符串的答案相反。 我在第7行添加了以下内容: 但是我得到了以下错误: 未捕获的引用Error:未定义html 评论JSFiddle(已编辑)