使用Angular Monorepo无法绑定到"ngIf",因为它不是"div"的已知属性,并且"my-selector"不是已知元素



我在Stack Overflow上看过其他类似的帖子,但我不认为这是重复的。

我已经用三个私有库和一个应用程序构建了一个Angular 11单线程。在终端中,一切似乎都没有明显的抱怨,甚至应用程序启动到其主页也没有抱怨。

我的一个库有组件和页面的组合,组件和页面都包含在库模块导出(以及entryComponents)中。但是VSCode告诉我在库模块中声明的组件对相同的模块中的页面不可见。这不仅仅是一个VSCode问题,因为当我的页面加载时,可以肯定的是,VSCode标记的组件不会出现在页面中。

然后,当我导航到我的登录页面(也在同一个库模块),它呈现页面,但devTools控制台表明:Can't bind to 'ngIf' since it isn't a known property of 'div'。我检查过类似的帖子Stack Overflow和他们都归结为确保CommonModule被导入到任何地方,它肯定看起来像我已经做到了,但我仍然得到这个错误。

我要试着创造一个最小的可复制的例子,但与此同时,有人能想到我在这里可能做错了什么愚蠢的事情吗?

UPDATE # 1

我已经创建了一个"minimal"可复制的例子(这仍然相当复杂,但这是我能想到的最基本的例子)。你可以在这里克隆它:https://github.com/vicatcu/monorepo-example-error。你应该能够这样做:

npm install
npm run application

然后在浏览器中你会看到一个空白页面,上面写着"导航链接在此下方"。显示出来。然而,目的是让你应该看到这一点,再加上下面的文本"使用此组件导航"。由NavLinks组件提供,在它的下面你应该看到一些随机文本。LoginComponent是默认路由。

怎么了?

更新# 2

我已经更新了最小的可重复的例子,不包括任何依赖于ionic和rsync在npm运行应用程序脚本的任何要求,在这个分支:https://github.com/vicatcu/monorepo-example-error/tree/remove-ionic-deps

同样的问题。

语法正确吗?

<div *ngIf="condition">Content to render when condition is true.</div>

还要验证你的组件是在你导入CommonModule的同一个模块中声明的,用ngFor做一个测试,看看是否会发生同样的情况。如果问题仍然存在,请尝试测试组件,而不需要任何指示来检查组件是否正确设置。请告诉我发生了什么,并把你的堆栈记录发给我。

更新:

@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule, //REPLACE WITH CommonModule
IonicModule.forRoot(),
AppRoutingModule,
LibComponentsModule,
BrowserAnimationsModule
],
providers: [
StatusBar,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
Geolocation,
Diagnostic
],
bootstrap: [AppComponent]
})
export class AppModule { }

最新更新