给出“未知属性”错误的指令

Posted

技术标签:

【中文标题】给出“未知属性”错误的指令【英文标题】:Directive giving "not a know property" error 【发布时间】:2021-02-11 06:38:03 【问题描述】:

我有一个指令,我在要翻译的元素上使用 [Translation] 调用它。 我有多个组件运行时没有问题,但有一个组件给了我错误:

“无法绑定到 'Translation',因为它不是 'textarea' 的已知属性。”

上线

<textarea [Translation] id="commentTxt" [(ngModel)]="commentTxt" name="commentTxt"
placeholder="Description..." rows="2" class="form-control"></textarea>

如果我删除 [Translation] 并使用 --live-reload 进行编译,它会成功编译。 如果在我添加、保存和重新加载之后,即使错误仍然显示在终端上,[翻译] 网络应用程序也能正常工作。

我在全球范围内声明了翻译服务:

@NgModule(   declarations: [
    ...
    Translation,
    ...   ],

我一直在兜圈子,不知道除了错别字之外可能是什么原因造成的,如果通过复制->粘贴工作元素就万无一失。

还有哪些其他可能的原因可能导致上述错误?

【问题讨论】:

【参考方案1】:

指令/组件不能全局定义(与提供程序不同)。如果组件 A 要使用指令 B,那么声明 A 的模块必须导入声明和导出 B 的模块。

确保您的指令在模块中声明并导出:

@NgModule( declarations: [Translation], exports: [Translation]  )

您的功能模块当然也必须导入给定的模块:

@NgModule( imports: [ModuleThatIncludesTranslationDirective]  )

如果这没有帮助,也可能是你的指令的定义:

对于结构指令,您使用*Translation,对于属性指令[Translation]。这个话题已经有good post了,我就不再赘述了。

【讨论】:

它已经被声明并在整个应用程序的每个组件中工作,除了这个。我也没有使用功能模块。 声明 Translation 指令的模块是否与声明组件的模块相同?如果不是,那么声明你的组件的模块是否也导入了声明 Translation 的模块?在 Angular 中没有像组件/声明的全局声明那样的东西,这只存在于服务中。 我的意思是全局,导入应用模块中的所有组件并在那里声明翻译服务。让我感到困惑的是,如果我删除了我“调用”指令的 html 行,应用程序就会工作,然后如果我在那里添加它,它会继续工作,直到我停止它并尝试重新编译所有内容。

以上是关于给出“未知属性”错误的指令的主要内容,如果未能解决你的问题,请参考以下文章

如何杀死“未知属性'扁平'被忽略”警告?

构建 Gradle 错误无法获取未知属性“编译”

Webpack 错误 - configuration.node 具有未知属性“fs”

Rails:红宝石在导轨上的未知属性错误

当我尝试使用新的 Gradle 7 版本目录时出现未知属性错误

错误:在 Android Studio 3.1.4 中无法获取 KotlinTargetPreset 的未知属性“iosX64”?