typescript 无法绑定到'routerLink'/'ngClass,因为它不是' a '的已知属性,即使它们已导入

k97glaaz  于 2023-06-24  发布在  TypeScript
关注(0)|答案(1)|浏览(164)

我将一个旧的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指南。如果我们的应用程序没有使用所提到的更改组件,则跳过了某些步骤。

2ul0zpep

2ul0zpep1#

首先,你试过使用Angular更新指南吗?我建议你从这里开始,如果你还没有:https://update.angular.io/?v=7.0-16.0
对于routerLink问题,应该没有理由绑定括号语法,然后传入双引号字符串。如果这个值是硬编码的,你可以简化它。

<a routerLink="/environment/resource-management/operating-equipments">

对于ngClass问题,根据the docs,看起来你需要把类名放在引号中,像这样:

<a [ngClass]="{ 'active': tab == 'operating-equipments' }">

相关问题