我将一个旧的angular项目从angular 7迁移到16。
当我尝试运行应用程序时,我得到了大量的错误,其中主要是:
无法绑定到'ngClass',因为它不是'a'的已知属性
无法绑定到'routerLink',因为它不是'a'的已知属性
这种情况不应该发生,因为我在应用程序的主模块和每个子模块中导入了RouterModule和CommonModule,因为它们是必要的。如果我们看一个具体的例子,resource-management-list-page.component.html:好了<a [routerLink]="'/environment/resource-management/operating-equipments'" [ngClass]="{ active: tab == 'operating-equipments' }">
这里我得到了上面显示的错误。
在模块中:ResourceManagementModule导出ResourceManagementListPageComponent,则导入以下模块
import { RouterModule } from "@angular/router";
import { CommonModule } from "@angular/common";
...
@NgModule({...
imports: \[
CommonModule,
RouterModule,
...
]
...
我们的主模块site. modular.ts也是如此(类似app. modular.ts的工作方式)。
整个错误消息看起来像这样:
Error: src/app/modules/resourcemanagement/pages/resource-management-list-page/resource-management-list-page.component.html:25:11 - error NG8002: Can't bind to 'routerLink' since it isn't a known property of 'a'.
25 \[routerLink\]="'/environment/resource-management/operating-equipments'"
src/app/modules/resourcemanagement/pages/resource-management-list-page/resource-management-list-page.component.ts:15:16
15 templateUrl: "./resource-management-list-page.component.html",
Error occurs in the template of component ResourceManagementListPageComponent.
我不知道如何解决这个问题或什么是错误的,帮助将不胜感激。如有必要,可以提供更多的上下文。
更新:对于迁移,我遵循了https://update.angular.io/?v=7.2-16.0指南。如果我们的应用程序没有使用所提到的更改组件,则跳过了某些步骤。
1条答案
按热度按时间2ul0zpep1#
首先,你试过使用Angular更新指南吗?我建议你从这里开始,如果你还没有:https://update.angular.io/?v=7.0-16.0
对于
routerLink
问题,应该没有理由绑定括号语法,然后传入双引号字符串。如果这个值是硬编码的,你可以简化它。对于
ngClass
问题,根据the docs,看起来你需要把类名放在引号中,像这样: