无法绑定到“x”,因为它不是“y”的已知属性

2024-03-26

我有一个有角度的站点,其中包含另一个组件内的一个组件。我正在使用路由和延迟加载外部组件(ComponentA)。内部组件 (ComponentB) 取决于第 3 方指令。

这是概念证明 https://plnkr.co/edit/7maVz2vO9LKTli47hyWl?p=info(打开控制台查看错误)。

在 ComponentB 中使用第 3 方指令时出现错误。这不是指令本身的错误,而是我构建代码的错误。

<tree-root [nodes]="nodes"></tree-root>

无法绑定到“节点”,因为它不是“树根”的已知属性

我可以通过在 ComponentA 中导入第 3 方模块来解决这个问题,但由于 ComponentA 不依赖于这个模块,所以这样做感觉是错误的。

我创建的 Plunker 是我的应用程序的一小部分,旨在隔离问题。它是为了演示一个概念,而不是作为一个应用程序有意义。我想要实现的是创建一个可以添加到我的任何页面的组件。该组件可以是一个小部件或其他东西,添加到一个或多个父页面。它是独立的。

我对 Angular 的有限知识从这里开始显现出来。由于组件应该允许我们进行基于组件的开发,将应用程序分成更小的部分,所以我不明白为什么 ComponentA 需要知道 ComponentB 具有哪些依赖项才能在其视图中使用它。

我还将证明这只是一个问题,因为我在 ComponentB 中包含了第 3 方指令。如果我删除该指令,一切正常。例如,如果我做了这样的事情:

<ul>
    <li *ngFor="let node of nodes">
        {{ node.name }}
    </li>
</ul>

该应用程序运行良好,没有错误。

我做错了什么以及我应该采取哪些不同的做法?如果解决方案是向 ComponentA 添加导入,我会接受作为提供良好解释的答案(例如为什么*ngFor有效,但是tree-root指令没有)。


我回到起点,意识到我错过了什么:

In feature-b.module.ts我应该导出该组件:

exports: [
    FeatureBComponent
]

我也有必要导入FeatureBModule而不是FeatureBComponent.

从 '../feature-by/feature-b.component' 导入 { 功能组件 };

import { FeatureBModule } from '../feature-b/feature-b.module';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法绑定到“x”,因为它不是“y”的已知属性 的相关文章

随机推荐