typescript 更新到Angular 13后的属性绑定错误

bq9c1y66  于 2023-05-19  发布在  TypeScript
关注(0)|答案(3)|浏览(225)

我得到这个错误
属性绑定ngIf未被嵌入模板上的任何指令使用。确保属性名拼写正确,并且所有指令都列在“@NgModule.declarations”中
即使你运行ng serve时也能正常工作。

当我将angular更新为v13时,我开始得到这个编译错误。
我已经尝试重新启动 Vscode 并重新安装 Angular Language Service,并安装了以前版本的 Angular Language Service...都不管用。
我的app.module.ts

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [AppComponent],
  imports: [CommonModule, BrowserModule, AppRoutingModule],
  providers: [],
  bootstrap: [AppComponent],
  exports: [CommonModule, BrowserModule],
})
export class AppModule {}
vltsax25

vltsax251#

在Github上,禁用Use legacy View Engine language service解决了这个问题。
进入Angular Language Service的扩展设置,取消Use legacy View Engine language service

qojgxg4l

qojgxg4l2#

不久前我自己也犯了这个错误。
我在网上搜索了一下,根据this issue,这是运行ngcc后的intellisense索引的问题,与您的代码无关。您可以通过删除node_modulespackage-lock.json并运行npm i来验证我的声明。您将看到错误将消失,但当您运行run serveng build时,它将再次弹出。无论如何,您的代码将编译和运行,因为它是没有问题的,但你会看到这个错误,直到角团队解决这个问题。
作为一种变通方法,你可以把它 Package 在一个<ng-container>中,(在某些情况下) 它会修复错误,但我自己没有这样做。我在等一个bug修复补丁。

aiqt4smr

aiqt4smr3#

试试这个

IN .ts文件:

export class Helloworld implements OnInit {
  valid: boolean = false;

   ngOnInit(){
     this.valid = true;
   }

}

HTML格式

<div *ngIf="valid"> Hello World</div>

在这里使用Angular中的结构绑定将能够识别您的“有效”属性。

相关问题